├── .gitattributes ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── images └── logo.png ├── package-lock.json ├── package.json ├── screenshot ├── logoHD.png ├── notification.jpg └── usage.jpg ├── src ├── asset.ts ├── extension.ts ├── reminderView.ts ├── scheduler.ts └── utility.ts ├── tsconfig.json └── tslint.json /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behavior to automatically normalize line endings. 2 | * text=auto 3 | 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules 3 | dist 4 | *.vsix 5 | .vscode-test-web 6 | -------------------------------------------------------------------------------- /.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 | "eg2.tslint" 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 | "name": "Extension", 9 | "type": "extensionHost", 10 | "request": "launch", 11 | "runtimeExecutable": "${execPath}", 12 | "args": [ 13 | "--extensionDevelopmentPath=${workspaceFolder}" 14 | ], 15 | "outFiles": [ 16 | "${workspaceFolder}/dist/*.js" 17 | ], 18 | "preLaunchTask": "npm: watch" 19 | }, 20 | { 21 | "name": "webExtension", 22 | "type": "pwa-extensionHost", 23 | "debugWebWorkerHost": true, 24 | "request": "launch", 25 | "args": [ 26 | "--extensionDevelopmentPath=${workspaceFolder}", 27 | "--extensionDevelopmentKind=web" 28 | ], 29 | "outFiles": ["${workspaceFolder}/dist/**/*.js"], 30 | "preLaunchTask": "npm: watch" 31 | } 32 | ] 33 | } -------------------------------------------------------------------------------- /.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 | } -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | out/ 3 | src/ 4 | media/ 5 | screenshot/ 6 | node_modules/ 7 | .gitignore 8 | tsconfig.json 9 | vsc-extension-quickstart.md 10 | tslint.json -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.5.4 (2021-12-02) 2 | * 通过cdn方式加载vscode依赖库,进一步减小体积 3 | * 整个扩展可被打包为单个js文件 4 | * 完美网页插件支持 5 | 6 | ## 0.5.2 (2021-11-28) 7 | * 修改时间间隔时可以即时应用 8 | * 修复了无法在vscode在线版加载图片的问题 9 | 10 | ## 0.5.1 (2021-11-28) 11 | * 支持vscode在线版 12 | 13 | ## 0.5.0 (2021-11-28) 14 | * 通过在线图片大幅降低安装包体积 15 | 16 | ## 0.4.3 (2021-11-10) 17 | * 更新和完善README 18 | 19 | ## 0.4.2 (2021-11-10) 20 | * 增加一张阿草表情 21 | * 增加混合模式,有10%的概率随机到阿草模式或牛牛模式 22 | 23 | ## 0.4.1 (2021-11-07) 24 | * 在弹出页面中显示作者信息 25 | * 增加链接到作者的作品集页面功能 26 | 27 | ## 0.4.0 (2021-10-30) 28 | * 更换图标为嘉然 29 | * 防社死模式默认开启 30 | * 修改提醒页面样式 31 | * 增加再来一张切换按钮 32 | 33 | ## 0.3.2 (2021-09-27) 34 | * 修改提醒页面样式 35 | * 更新README 36 | 37 | ## 0.3.1 (2021-09-01) 38 | * 修复含有多个相同Tag时,人物类别识别出错的bug 39 | 40 | ## 0.3.0 (2021-08-27) 41 | * 根据图片的Tag自适应加载提醒文字 42 | * 增加牛牛鼓励师和阿草鼓励师模式 43 | 44 | ## 0.2.0 (2021-08-21) 45 | * 修改图库为A-SOUL海报 46 | * 在提醒页面中增加随机的二创作品展示 47 | * 增加二创图库指令链接 48 | * 增加防社死模式,通过右下角弹出消息框提醒休息 49 | 50 | ## 0.1.2 (2019-05-06) 51 | * Remove a picture 52 | 53 | ## 0.1.1 (2019-04-19) 54 | * [#25](https://github.com/formulahendry/vscode-ycy/pull/25): Fix typo 55 | 56 | ## 0.1.0 (2019-04-18) 57 | * 增加多图随机 58 | * 用户可自定义标题 59 | * 用户可自定义图片 60 | 61 | ## 0.0.3 (2019-04-11) 62 | * Move up contest section in README 63 | 64 | ## 0.0.2 (2019-04-11) 65 | * Add QR Code for voting 66 | 67 | ## 0.0.1 (2019-03-24) 68 | * Initial Release -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 as042971 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 |
2 | 3 | A-SOUL鼓励师 4 | 5 | # A-SOUL 鼓励师 6 | 7 | 在 VS Code 中连续写代码一小时(时间可配置),会有A-SOUL成员提醒你该休息啦~ 8 | 9 | [![Visual Studio Marketplace Installs](https://img.shields.io/visual-studio-marketplace/v/AS042971.asoul)](https://marketplace.visualstudio.com/items?itemName=AS042971.asoul) 10 | [![Visual Studio Marketplace Installs](https://img.shields.io/visual-studio-marketplace/last-updated/AS042971.asoul)](https://marketplace.visualstudio.com/items?itemName=AS042971.asoul) 11 | [![Preview in vscode.dev](https://img.shields.io/badge/preview%20in-vscode.dev-blue)](https://vscode.dev) 12 | 13 | [![Visual Studio Marketplace Installs](https://img.shields.io/visual-studio-marketplace/d/AS042971.asoul)](https://marketplace.visualstudio.com/items?itemName=AS042971.asoul) 14 | [![Visual Studio Marketplace Installs](https://img.shields.io/visual-studio-marketplace/i/AS042971.asoul)](https://marketplace.visualstudio.com/items?itemName=AS042971.asoul) 15 | [![Visual Studio Marketplace Rating](https://img.shields.io/visual-studio-marketplace/r/AS042971.asoul)](https://marketplace.visualstudio.com/items?AS042971.asoul) 16 | 17 | [![GitHub top language](https://img.shields.io/github/languages/top/AS042971/vscode-asoul)](https://github.com/AS042971/vscode-asoul) 18 | [![GitHub](https://img.shields.io/github/license/AS042971/vscode-asoul)](https://github.com/AS042971/vscode-asoul/blob/master/LICENSE) 19 | 20 |
21 | 22 | Fork 自 [超越鼓励师](https://github.com/formulahendry/vscode-ycy) 23 | 24 | 注意:本程序包已完美适配 https://vscode.dev/, 欢迎直接在线体验。 25 | 26 | ## 使用 27 | 28 | 除了每过一小时会自动弹出提醒页面,也可以按 `F1`, 然后输入 `asoul: 打开提醒页面`来打开提醒页面 29 | 30 | ![usage](https://raw.githubusercontents.com/AS042971/vscode-asoul/master/screenshot/usage.jpg) 31 | (展示用图片来自[这里](https://t.bilibili.com/580623627884440502)) 32 | 33 | ## 配置 34 | 35 | * `asoul.reminderViewIntervalInMinutes`: 展示提醒页面的时间间隔(分钟)。(默认值为**60**) 36 | * `asoul.title`: 提示文字。 (默认值为**亲爱的一个魂儿,代码写久了,该休息啦~**) 37 | * `asoul.titleAva`, `asoul.titleBella`, `asoul.titleCarol`, `asoul.titleDiana`, `asoul.titleEileen`: 五位成员的专属提示文字。在图片的Tag唯一包含这位成员时,会优先显示这里设定的成员专属提示。 38 | * `asoul.type`: 见下表所示 39 | 40 | | 选项 | 名称 | 描述 | 41 | | -- | -- | -- | 42 | | url | 自定义图片 | 参见`asoul.customImages`的配置 | 43 | | random | 二创 | 来自[这里](https://asoulfanart.com/pic)的随机二创 | 44 | | default | 官方图 | A-SOUL成员的官方海报 | 45 | | niuniu | 牛牛鼓励师 | 勇敢牛牛,不怕困难! | 46 | | cao | 阿草鼓励师 | 狂暴鸿儒 | 47 | | mix | 混合模式 | 90%概率弹出二创,5%概率弹出阿草,5%概率弹出勇敢牛牛| 48 | 49 | * `asoul.customImages`: 配置自定义网图对应的图片数组(需要搭配asoul.type为url,可使用[imgurl](https://imgurl.org/)等图床上传自定义图片) 50 | * `asoul.notification`: 是否打开防社死模式。在防社死模式下,每到设定的时间后,不会直接弹出图片窗口,而是会在右下角显示消息提醒(数秒后消失),手动点击后才会打开页面。(默认值为**true**) 51 | ![notification](https://raw.githubusercontents.com/AS042971/vscode-asoul/master/screenshot/notification.jpg) 52 | 53 | ## 二创画廊 54 | 55 | 本插件展示的所有二创作品均来自 [A-SOUL Fans Art - 一个魂的二创](https://asoulfanart.com/pic) 的整理(同时,特别鸣谢网站方提供的API)。 56 | 所有图片的版权均归原作者所有。 57 | 可通过按 `F1`, 然后输入 `asoul: 打开二创画廊 (默认浏览器)`来打开此网站 58 | 59 | ## 友情链接 60 | 61 | - [A-SOUL Fans Art - 一个魂的二创](https://asoulfanart.com/pic) 62 | - [VSCode插件:A-SOUL 提醒小助手](https://marketplace.visualstudio.com/items?itemName=JiangYan.asoul-notifications&ssr=false#overview) 63 | - [IDEA插件:A-SOUL鼓励师](https://github.com/cnsky1103/A-SOUL-Reminder) 64 | - [Windows 10/11 版提醒小助手](https://github.com/skykeyjoker/A-Soul-Notification) 65 | - [Typora主题:Typora-theme-jiaran](https://github.com/q19980722/Typora-theme-jiaran) 66 | -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AS042971/vscode-asoul/a6c19cdb4856c25f31a0c6ba2c7408145b02a82d/images/logo.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "asoul", 3 | "version": "0.5.6", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "asoul", 9 | "version": "0.5.6", 10 | "devDependencies": { 11 | "@types/mocha": "^9.0.0", 12 | "@types/node": "^16.11.10", 13 | "@types/vscode": "^1.61.0", 14 | "@vscode/test-web": "^0.0.15", 15 | "axios": ">=0.24.0", 16 | "esbuild": "^0.14.0", 17 | "tslint": "^5.20.1", 18 | "typescript": "^4.5.2" 19 | }, 20 | "engines": { 21 | "vscode": "^1.61.0" 22 | } 23 | }, 24 | "node_modules/@babel/code-frame": { 25 | "version": "7.16.0", 26 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", 27 | "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", 28 | "dev": true, 29 | "dependencies": { 30 | "@babel/highlight": "^7.16.0" 31 | }, 32 | "engines": { 33 | "node": ">=6.9.0" 34 | } 35 | }, 36 | "node_modules/@babel/helper-validator-identifier": { 37 | "version": "7.15.7", 38 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", 39 | "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", 40 | "dev": true, 41 | "engines": { 42 | "node": ">=6.9.0" 43 | } 44 | }, 45 | "node_modules/@babel/highlight": { 46 | "version": "7.16.0", 47 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", 48 | "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", 49 | "dev": true, 50 | "dependencies": { 51 | "@babel/helper-validator-identifier": "^7.15.7", 52 | "chalk": "^2.0.0", 53 | "js-tokens": "^4.0.0" 54 | }, 55 | "engines": { 56 | "node": ">=6.9.0" 57 | } 58 | }, 59 | "node_modules/@koa/router": { 60 | "version": "10.1.1", 61 | "resolved": "https://registry.nlark.com/@koa/router/download/@koa/router-10.1.1.tgz", 62 | "integrity": "sha1-jlqFybJD4Lx3aALA3lZFYeV6X3g=", 63 | "dev": true, 64 | "dependencies": { 65 | "debug": "^4.1.1", 66 | "http-errors": "^1.7.3", 67 | "koa-compose": "^4.1.0", 68 | "methods": "^1.1.2", 69 | "path-to-regexp": "^6.1.0" 70 | }, 71 | "engines": { 72 | "node": ">= 8.0.0" 73 | } 74 | }, 75 | "node_modules/@tootallnate/once": { 76 | "version": "1.1.2", 77 | "resolved": "https://registry.npmmirror.com/@tootallnate/once/download/@tootallnate/once-1.1.2.tgz?cache=0&sync_timestamp=1632734046275&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40tootallnate%2Fonce%2Fdownload%2F%40tootallnate%2Fonce-1.1.2.tgz", 78 | "integrity": "sha1-zLkURTYBeaBOf+av94wA/8Hur4I=", 79 | "dev": true, 80 | "engines": { 81 | "node": ">= 6" 82 | } 83 | }, 84 | "node_modules/@types/mocha": { 85 | "version": "9.0.0", 86 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", 87 | "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", 88 | "dev": true 89 | }, 90 | "node_modules/@types/node": { 91 | "version": "16.11.10", 92 | "resolved": "https://registry.npmmirror.com/@types/node/download/@types/node-16.11.10.tgz", 93 | "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==", 94 | "dev": true 95 | }, 96 | "node_modules/@types/vscode": { 97 | "version": "1.62.0", 98 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.62.0.tgz", 99 | "integrity": "sha512-iGlQJ1w5e3qPUryroO6v4lxg3ql1ztdTCwQW3xEwFawdyPLoeUSv48SYfMwc7kQA7h6ThUqflZIjgKAykeF9oA==", 100 | "dev": true 101 | }, 102 | "node_modules/@types/yauzl": { 103 | "version": "2.9.2", 104 | "resolved": "https://registry.npmmirror.com/@types/yauzl/download/@types/yauzl-2.9.2.tgz", 105 | "integrity": "sha1-xI5dVq/xREQJ45+hZLC01FUqe3o=", 106 | "dev": true, 107 | "optional": true, 108 | "dependencies": { 109 | "@types/node": "*" 110 | } 111 | }, 112 | "node_modules/@vscode/test-web": { 113 | "version": "0.0.15", 114 | "resolved": "https://registry.npmmirror.com/@vscode/test-web/download/@vscode/test-web-0.0.15.tgz", 115 | "integrity": "sha1-jKym2QLVueGLjgxMwPamnUZ905w=", 116 | "dev": true, 117 | "license": "MIT", 118 | "dependencies": { 119 | "@koa/router": "^10.1.1", 120 | "decompress": "^4.2.1", 121 | "decompress-targz": "^4.1.1", 122 | "http-proxy-agent": "^4.0.1", 123 | "https-proxy-agent": "^5.0.0", 124 | "koa": "^2.13.1", 125 | "koa-morgan": "^1.0.1", 126 | "koa-mount": "^4.0.0", 127 | "koa-static": "^5.0.0", 128 | "minimist": "^1.2.5", 129 | "playwright": "1.14.1", 130 | "vscode-uri": "^3.0.2" 131 | }, 132 | "bin": { 133 | "vscode-test-web": "out/index.js" 134 | }, 135 | "engines": { 136 | "node": ">=8.9.3" 137 | } 138 | }, 139 | "node_modules/accepts": { 140 | "version": "1.3.7", 141 | "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", 142 | "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", 143 | "dev": true, 144 | "dependencies": { 145 | "mime-types": "~2.1.24", 146 | "negotiator": "0.6.2" 147 | }, 148 | "engines": { 149 | "node": ">= 0.6" 150 | } 151 | }, 152 | "node_modules/agent-base": { 153 | "version": "6.0.2", 154 | "resolved": "https://registry.nlark.com/agent-base/download/agent-base-6.0.2.tgz", 155 | "integrity": "sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c=", 156 | "dev": true, 157 | "dependencies": { 158 | "debug": "4" 159 | }, 160 | "engines": { 161 | "node": ">= 6.0.0" 162 | } 163 | }, 164 | "node_modules/ansi-styles": { 165 | "version": "3.2.1", 166 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 167 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 168 | "dev": true, 169 | "dependencies": { 170 | "color-convert": "^1.9.0" 171 | }, 172 | "engines": { 173 | "node": ">=4" 174 | } 175 | }, 176 | "node_modules/argparse": { 177 | "version": "1.0.10", 178 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 179 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 180 | "dev": true, 181 | "dependencies": { 182 | "sprintf-js": "~1.0.2" 183 | } 184 | }, 185 | "node_modules/axios": { 186 | "version": "0.24.0", 187 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", 188 | "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", 189 | "dev": true, 190 | "dependencies": { 191 | "follow-redirects": "^1.14.4" 192 | } 193 | }, 194 | "node_modules/balanced-match": { 195 | "version": "1.0.2", 196 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 197 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 198 | "dev": true 199 | }, 200 | "node_modules/base64-js": { 201 | "version": "1.5.1", 202 | "resolved": "https://registry.nlark.com/base64-js/download/base64-js-1.5.1.tgz", 203 | "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=", 204 | "dev": true 205 | }, 206 | "node_modules/basic-auth": { 207 | "version": "2.0.1", 208 | "resolved": "https://registry.nlark.com/basic-auth/download/basic-auth-2.0.1.tgz", 209 | "integrity": "sha1-uZgnm/R844NEtPPPkW1Gebv1Hjo=", 210 | "dev": true, 211 | "dependencies": { 212 | "safe-buffer": "5.1.2" 213 | }, 214 | "engines": { 215 | "node": ">= 0.8" 216 | } 217 | }, 218 | "node_modules/bl": { 219 | "version": "1.2.3", 220 | "resolved": "https://registry.npm.taobao.org/bl/download/bl-1.2.3.tgz?cache=0&sync_timestamp=1617381743180&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbl%2Fdownload%2Fbl-1.2.3.tgz", 221 | "integrity": "sha1-Ho3YAULqyA1xWMnczAR/tiDgNec=", 222 | "dev": true, 223 | "dependencies": { 224 | "readable-stream": "^2.3.5", 225 | "safe-buffer": "^5.1.1" 226 | } 227 | }, 228 | "node_modules/brace-expansion": { 229 | "version": "1.1.11", 230 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 231 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 232 | "dev": true, 233 | "dependencies": { 234 | "balanced-match": "^1.0.0", 235 | "concat-map": "0.0.1" 236 | } 237 | }, 238 | "node_modules/buffer": { 239 | "version": "5.7.1", 240 | "resolved": "https://registry.nlark.com/buffer/download/buffer-5.7.1.tgz", 241 | "integrity": "sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=", 242 | "dev": true, 243 | "dependencies": { 244 | "base64-js": "^1.3.1", 245 | "ieee754": "^1.1.13" 246 | } 247 | }, 248 | "node_modules/buffer-alloc": { 249 | "version": "1.2.0", 250 | "resolved": "https://registry.nlark.com/buffer-alloc/download/buffer-alloc-1.2.0.tgz", 251 | "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=", 252 | "dev": true, 253 | "dependencies": { 254 | "buffer-alloc-unsafe": "^1.1.0", 255 | "buffer-fill": "^1.0.0" 256 | } 257 | }, 258 | "node_modules/buffer-alloc-unsafe": { 259 | "version": "1.1.0", 260 | "resolved": "https://registry.nlark.com/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz", 261 | "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=", 262 | "dev": true 263 | }, 264 | "node_modules/buffer-crc32": { 265 | "version": "0.2.13", 266 | "resolved": "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz", 267 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 268 | "dev": true, 269 | "engines": { 270 | "node": "*" 271 | } 272 | }, 273 | "node_modules/buffer-fill": { 274 | "version": "1.0.0", 275 | "resolved": "https://registry.nlark.com/buffer-fill/download/buffer-fill-1.0.0.tgz", 276 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", 277 | "dev": true 278 | }, 279 | "node_modules/builtin-modules": { 280 | "version": "1.1.1", 281 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 282 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 283 | "dev": true, 284 | "engines": { 285 | "node": ">=0.10.0" 286 | } 287 | }, 288 | "node_modules/cache-content-type": { 289 | "version": "1.0.1", 290 | "resolved": "https://registry.nlark.com/cache-content-type/download/cache-content-type-1.0.1.tgz", 291 | "integrity": "sha1-A1zeKwjuISn0qDFeqPAKANuhRTw=", 292 | "dev": true, 293 | "dependencies": { 294 | "mime-types": "^2.1.18", 295 | "ylru": "^1.2.0" 296 | }, 297 | "engines": { 298 | "node": ">= 6.0.0" 299 | } 300 | }, 301 | "node_modules/chalk": { 302 | "version": "2.4.2", 303 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 304 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 305 | "dev": true, 306 | "dependencies": { 307 | "ansi-styles": "^3.2.1", 308 | "escape-string-regexp": "^1.0.5", 309 | "supports-color": "^5.3.0" 310 | }, 311 | "engines": { 312 | "node": ">=4" 313 | } 314 | }, 315 | "node_modules/co": { 316 | "version": "4.6.0", 317 | "resolved": "https://registry.nlark.com/co/download/co-4.6.0.tgz?cache=0&sync_timestamp=1624608078028&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fco%2Fdownload%2Fco-4.6.0.tgz", 318 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 319 | "dev": true, 320 | "engines": { 321 | "iojs": ">= 1.0.0", 322 | "node": ">= 0.12.0" 323 | } 324 | }, 325 | "node_modules/color-convert": { 326 | "version": "1.9.3", 327 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 328 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 329 | "dev": true, 330 | "dependencies": { 331 | "color-name": "1.1.3" 332 | } 333 | }, 334 | "node_modules/color-name": { 335 | "version": "1.1.3", 336 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 337 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 338 | "dev": true 339 | }, 340 | "node_modules/commander": { 341 | "version": "2.20.3", 342 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 343 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 344 | "dev": true 345 | }, 346 | "node_modules/concat-map": { 347 | "version": "0.0.1", 348 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 349 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 350 | "dev": true 351 | }, 352 | "node_modules/content-disposition": { 353 | "version": "0.5.3", 354 | "resolved": "https://registry.nlark.com/content-disposition/download/content-disposition-0.5.3.tgz", 355 | "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", 356 | "dev": true, 357 | "dependencies": { 358 | "safe-buffer": "5.1.2" 359 | }, 360 | "engines": { 361 | "node": ">= 0.6" 362 | } 363 | }, 364 | "node_modules/content-type": { 365 | "version": "1.0.4", 366 | "resolved": "https://registry.nlark.com/content-type/download/content-type-1.0.4.tgz", 367 | "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", 368 | "dev": true, 369 | "engines": { 370 | "node": ">= 0.6" 371 | } 372 | }, 373 | "node_modules/cookies": { 374 | "version": "0.8.0", 375 | "resolved": "https://registry.nlark.com/cookies/download/cookies-0.8.0.tgz", 376 | "integrity": "sha1-EpPOSzkXQKhAbjyYcOgoxLVPP5A=", 377 | "dev": true, 378 | "dependencies": { 379 | "depd": "~2.0.0", 380 | "keygrip": "~1.1.0" 381 | }, 382 | "engines": { 383 | "node": ">= 0.8" 384 | } 385 | }, 386 | "node_modules/cookies/node_modules/depd": { 387 | "version": "2.0.0", 388 | "resolved": "https://registry.nlark.com/depd/download/depd-2.0.0.tgz", 389 | "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=", 390 | "dev": true, 391 | "engines": { 392 | "node": ">= 0.8" 393 | } 394 | }, 395 | "node_modules/core-util-is": { 396 | "version": "1.0.3", 397 | "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.3.tgz", 398 | "integrity": "sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=", 399 | "dev": true 400 | }, 401 | "node_modules/debug": { 402 | "version": "4.3.3", 403 | "resolved": "https://registry.npmmirror.com/debug/download/debug-4.3.3.tgz", 404 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 405 | "dev": true, 406 | "dependencies": { 407 | "ms": "2.1.2" 408 | }, 409 | "engines": { 410 | "node": ">=6.0" 411 | }, 412 | "peerDependenciesMeta": { 413 | "supports-color": { 414 | "optional": true 415 | } 416 | } 417 | }, 418 | "node_modules/decompress": { 419 | "version": "4.2.1", 420 | "resolved": "https://registry.nlark.com/decompress/download/decompress-4.2.1.tgz", 421 | "integrity": "sha1-AH9VzGpiwFWvo3wH62pO4bdz8Rg=", 422 | "dev": true, 423 | "dependencies": { 424 | "decompress-tar": "^4.0.0", 425 | "decompress-tarbz2": "^4.0.0", 426 | "decompress-targz": "^4.0.0", 427 | "decompress-unzip": "^4.0.1", 428 | "graceful-fs": "^4.1.10", 429 | "make-dir": "^1.0.0", 430 | "pify": "^2.3.0", 431 | "strip-dirs": "^2.0.0" 432 | }, 433 | "engines": { 434 | "node": ">=4" 435 | } 436 | }, 437 | "node_modules/decompress-tar": { 438 | "version": "4.1.1", 439 | "resolved": "https://registry.nlark.com/decompress-tar/download/decompress-tar-4.1.1.tgz", 440 | "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", 441 | "dev": true, 442 | "dependencies": { 443 | "file-type": "^5.2.0", 444 | "is-stream": "^1.1.0", 445 | "tar-stream": "^1.5.2" 446 | }, 447 | "engines": { 448 | "node": ">=4" 449 | } 450 | }, 451 | "node_modules/decompress-tarbz2": { 452 | "version": "4.1.1", 453 | "resolved": "https://registry.nlark.com/decompress-tarbz2/download/decompress-tarbz2-4.1.1.tgz", 454 | "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", 455 | "dev": true, 456 | "dependencies": { 457 | "decompress-tar": "^4.1.0", 458 | "file-type": "^6.1.0", 459 | "is-stream": "^1.1.0", 460 | "seek-bzip": "^1.0.5", 461 | "unbzip2-stream": "^1.0.9" 462 | }, 463 | "engines": { 464 | "node": ">=4" 465 | } 466 | }, 467 | "node_modules/decompress-tarbz2/node_modules/file-type": { 468 | "version": "6.2.0", 469 | "resolved": "https://registry.npmmirror.com/file-type/download/file-type-6.2.0.tgz", 470 | "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=", 471 | "dev": true, 472 | "engines": { 473 | "node": ">=4" 474 | } 475 | }, 476 | "node_modules/decompress-targz": { 477 | "version": "4.1.1", 478 | "resolved": "https://registry.nlark.com/decompress-targz/download/decompress-targz-4.1.1.tgz", 479 | "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", 480 | "dev": true, 481 | "dependencies": { 482 | "decompress-tar": "^4.1.1", 483 | "file-type": "^5.2.0", 484 | "is-stream": "^1.1.0" 485 | }, 486 | "engines": { 487 | "node": ">=4" 488 | } 489 | }, 490 | "node_modules/decompress-unzip": { 491 | "version": "4.0.1", 492 | "resolved": "https://registry.nlark.com/decompress-unzip/download/decompress-unzip-4.0.1.tgz", 493 | "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", 494 | "dev": true, 495 | "dependencies": { 496 | "file-type": "^3.8.0", 497 | "get-stream": "^2.2.0", 498 | "pify": "^2.3.0", 499 | "yauzl": "^2.4.2" 500 | }, 501 | "engines": { 502 | "node": ">=4" 503 | } 504 | }, 505 | "node_modules/decompress-unzip/node_modules/file-type": { 506 | "version": "3.9.0", 507 | "resolved": "https://registry.npmmirror.com/file-type/download/file-type-3.9.0.tgz", 508 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", 509 | "dev": true, 510 | "engines": { 511 | "node": ">=0.10.0" 512 | } 513 | }, 514 | "node_modules/deep-equal": { 515 | "version": "1.0.1", 516 | "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz?cache=0&sync_timestamp=1606860754950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.0.1.tgz", 517 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", 518 | "dev": true 519 | }, 520 | "node_modules/delegates": { 521 | "version": "1.0.0", 522 | "resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz", 523 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", 524 | "dev": true 525 | }, 526 | "node_modules/depd": { 527 | "version": "1.1.2", 528 | "resolved": "https://registry.nlark.com/depd/download/depd-1.1.2.tgz", 529 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 530 | "dev": true, 531 | "engines": { 532 | "node": ">= 0.6" 533 | } 534 | }, 535 | "node_modules/destroy": { 536 | "version": "1.0.4", 537 | "resolved": "https://registry.nlark.com/destroy/download/destroy-1.0.4.tgz", 538 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 539 | "dev": true 540 | }, 541 | "node_modules/diff": { 542 | "version": "4.0.2", 543 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 544 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 545 | "dev": true, 546 | "engines": { 547 | "node": ">=0.3.1" 548 | } 549 | }, 550 | "node_modules/ee-first": { 551 | "version": "1.1.1", 552 | "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", 553 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 554 | "dev": true 555 | }, 556 | "node_modules/encodeurl": { 557 | "version": "1.0.2", 558 | "resolved": "https://registry.nlark.com/encodeurl/download/encodeurl-1.0.2.tgz", 559 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 560 | "dev": true, 561 | "engines": { 562 | "node": ">= 0.8" 563 | } 564 | }, 565 | "node_modules/end-of-stream": { 566 | "version": "1.4.4", 567 | "resolved": "https://registry.nlark.com/end-of-stream/download/end-of-stream-1.4.4.tgz", 568 | "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", 569 | "dev": true, 570 | "dependencies": { 571 | "once": "^1.4.0" 572 | } 573 | }, 574 | "node_modules/esbuild": { 575 | "version": "0.14.0", 576 | "resolved": "https://registry.npmmirror.com/esbuild/download/esbuild-0.14.0.tgz", 577 | "integrity": "sha512-UOnSKRAyZondxdLrOXnI/mesUmU/GvDTcajCvxoIaObzMeQcn0HyoGtvbfATnazlx799ZqFSyIZGLXFszkjy3A==", 578 | "dev": true, 579 | "hasInstallScript": true, 580 | "bin": { 581 | "esbuild": "bin/esbuild" 582 | }, 583 | "optionalDependencies": { 584 | "esbuild-android-arm64": "0.14.0", 585 | "esbuild-darwin-64": "0.14.0", 586 | "esbuild-darwin-arm64": "0.14.0", 587 | "esbuild-freebsd-64": "0.14.0", 588 | "esbuild-freebsd-arm64": "0.14.0", 589 | "esbuild-linux-32": "0.14.0", 590 | "esbuild-linux-64": "0.14.0", 591 | "esbuild-linux-arm": "0.14.0", 592 | "esbuild-linux-arm64": "0.14.0", 593 | "esbuild-linux-mips64le": "0.14.0", 594 | "esbuild-linux-ppc64le": "0.14.0", 595 | "esbuild-netbsd-64": "0.14.0", 596 | "esbuild-openbsd-64": "0.14.0", 597 | "esbuild-sunos-64": "0.14.0", 598 | "esbuild-windows-32": "0.14.0", 599 | "esbuild-windows-64": "0.14.0", 600 | "esbuild-windows-arm64": "0.14.0" 601 | } 602 | }, 603 | "node_modules/esbuild-android-arm64": { 604 | "version": "0.14.0", 605 | "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/download/esbuild-android-arm64-0.14.0.tgz", 606 | "integrity": "sha512-X7BjFiRRNfxPNg1aT5zw4xK1vbvX2IvDPcEp4bv0CEXgR39UzuOMUsQoG92aZgj8JGs8jxQAZc8k9dVJ1WL2BA==", 607 | "cpu": [ 608 | "arm64" 609 | ], 610 | "dev": true, 611 | "optional": true, 612 | "os": [ 613 | "android" 614 | ] 615 | }, 616 | "node_modules/esbuild-darwin-64": { 617 | "version": "0.14.0", 618 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/download/esbuild-darwin-64-0.14.0.tgz", 619 | "integrity": "sha512-43vtt407jMp1kEXiaY0dEIGjOREax9F1+qMI0+F9tJyr06EHAofnbLL6cTmLgdPy/pMhltSvOJ8EddJrrOBgpQ==", 620 | "cpu": [ 621 | "x64" 622 | ], 623 | "dev": true, 624 | "optional": true, 625 | "os": [ 626 | "darwin" 627 | ] 628 | }, 629 | "node_modules/esbuild-darwin-arm64": { 630 | "version": "0.14.0", 631 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/download/esbuild-darwin-arm64-0.14.0.tgz", 632 | "integrity": "sha512-hMbT5YiBrFL763mnwR9BqNtq9XtJgJRxYs7Ad++KUd+ZhMoVE0Rs/YLe1oor9uBGhHLqQsZuJ2dUHjCsfT/iDg==", 633 | "cpu": [ 634 | "arm64" 635 | ], 636 | "dev": true, 637 | "optional": true, 638 | "os": [ 639 | "darwin" 640 | ] 641 | }, 642 | "node_modules/esbuild-freebsd-64": { 643 | "version": "0.14.0", 644 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/download/esbuild-freebsd-64-0.14.0.tgz", 645 | "integrity": "sha512-mx68HRYIZo6ZiHbWk5Md+mDJoDw779yWkJQAaBnXwOkGbDeA3JmPZjp6IPfy2P+n3emK9z6g4pKiebp1tQGVoQ==", 646 | "cpu": [ 647 | "x64" 648 | ], 649 | "dev": true, 650 | "optional": true, 651 | "os": [ 652 | "freebsd" 653 | ] 654 | }, 655 | "node_modules/esbuild-freebsd-arm64": { 656 | "version": "0.14.0", 657 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/download/esbuild-freebsd-arm64-0.14.0.tgz", 658 | "integrity": "sha512-iM8u+zTagh0WGn2FTTxi7DII/ycVzYyuf2Df6eP2ZX+vlx2FjaduhagRkpyhjfmEyhfJOrYSAR5R1biNPcA+VA==", 659 | "cpu": [ 660 | "arm64" 661 | ], 662 | "dev": true, 663 | "optional": true, 664 | "os": [ 665 | "freebsd" 666 | ] 667 | }, 668 | "node_modules/esbuild-linux-32": { 669 | "version": "0.14.0", 670 | "resolved": "https://registry.npmmirror.com/esbuild-linux-32/download/esbuild-linux-32-0.14.0.tgz", 671 | "integrity": "sha512-dWHotI2qlXWZyza7n85UubBj0asjpM7FTtQYDaRQKxoCJpCnSzq3aD55IJthiggZHXj2tAML9Bc5xjVLsBJR0w==", 672 | "cpu": [ 673 | "ia32" 674 | ], 675 | "dev": true, 676 | "optional": true, 677 | "os": [ 678 | "linux" 679 | ] 680 | }, 681 | "node_modules/esbuild-linux-64": { 682 | "version": "0.14.0", 683 | "resolved": "https://registry.npmmirror.com/esbuild-linux-64/download/esbuild-linux-64-0.14.0.tgz", 684 | "integrity": "sha512-7buo31kp1/yKWPm9vU44FEUwkeIROrIgnCDV9KLMLSbOjGEHBZXYJ2L0p4ZnB7Z+m5YiW7F/AfJu0/1E87nOeQ==", 685 | "cpu": [ 686 | "x64" 687 | ], 688 | "dev": true, 689 | "optional": true, 690 | "os": [ 691 | "linux" 692 | ] 693 | }, 694 | "node_modules/esbuild-linux-arm": { 695 | "version": "0.14.0", 696 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/download/esbuild-linux-arm-0.14.0.tgz", 697 | "integrity": "sha512-fgybXQwPRT4Io01+aD+yphcLOLRVGqbSdhvaDK3qBwqUvspFsq4QkI7PeeYpuQdBZWiRKLoi9v5r90l7JO/s+g==", 698 | "cpu": [ 699 | "arm" 700 | ], 701 | "dev": true, 702 | "optional": true, 703 | "os": [ 704 | "linux" 705 | ] 706 | }, 707 | "node_modules/esbuild-linux-arm64": { 708 | "version": "0.14.0", 709 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/download/esbuild-linux-arm64-0.14.0.tgz", 710 | "integrity": "sha512-9LBtCH2RkhDBwoAYksTtXljN6hlxxoL6a3ymNfXJG9JxFUQddOfhajXZdObFn/hgGkAFwx8dXqw+FnPm0FCzSg==", 711 | "cpu": [ 712 | "arm64" 713 | ], 714 | "dev": true, 715 | "optional": true, 716 | "os": [ 717 | "linux" 718 | ] 719 | }, 720 | "node_modules/esbuild-linux-mips64le": { 721 | "version": "0.14.0", 722 | "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/download/esbuild-linux-mips64le-0.14.0.tgz", 723 | "integrity": "sha512-Xz7soOqWeCWcLp15biPM08To+s0k1E/2q0pQZNQ+SY9S5H2vU4ujDXqKjxFc24G9CrOeUNEOXTkh+JldBGbTCA==", 724 | "cpu": [ 725 | "mips64el" 726 | ], 727 | "dev": true, 728 | "optional": true, 729 | "os": [ 730 | "linux" 731 | ] 732 | }, 733 | "node_modules/esbuild-linux-ppc64le": { 734 | "version": "0.14.0", 735 | "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/download/esbuild-linux-ppc64le-0.14.0.tgz", 736 | "integrity": "sha512-fuBXTyUaZKxpmp43Nf0M1uI1OmZv/COcME9PG7NQ/EniwC680Xj5xQFhEBDVnvQQ+6xOnXdfPSojJq7gQxrORQ==", 737 | "cpu": [ 738 | "ppc64" 739 | ], 740 | "dev": true, 741 | "optional": true, 742 | "os": [ 743 | "linux" 744 | ] 745 | }, 746 | "node_modules/esbuild-netbsd-64": { 747 | "version": "0.14.0", 748 | "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/download/esbuild-netbsd-64-0.14.0.tgz", 749 | "integrity": "sha512-pQaECTKr/iCXtn1qjwih+cvoZzbZ+P3NwLQo4uo/IesklbPTR5eF4d85L1vPFVgff+itBMxbbB7aoRznSglN3A==", 750 | "cpu": [ 751 | "x64" 752 | ], 753 | "dev": true, 754 | "optional": true, 755 | "os": [ 756 | "netbsd" 757 | ] 758 | }, 759 | "node_modules/esbuild-openbsd-64": { 760 | "version": "0.14.0", 761 | "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/download/esbuild-openbsd-64-0.14.0.tgz", 762 | "integrity": "sha512-HiaqQX9HMb9u3eYvKZ86+m/paQwASJSIjXiRTFpFusypjtU2NJqWb/LiRvhfmwC6rb7YHwCSPx+juSM7M+20bA==", 763 | "cpu": [ 764 | "x64" 765 | ], 766 | "dev": true, 767 | "optional": true, 768 | "os": [ 769 | "openbsd" 770 | ] 771 | }, 772 | "node_modules/esbuild-sunos-64": { 773 | "version": "0.14.0", 774 | "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/download/esbuild-sunos-64-0.14.0.tgz", 775 | "integrity": "sha512-TkMQOSiSU3fHLV3M+OKUgLZt5L7TpcBcMRvtFw1cTxAnX8eT+1qkWVLiDM8ow1C3P7PW3bkGY3LW8vOs8o/jBA==", 776 | "cpu": [ 777 | "x64" 778 | ], 779 | "dev": true, 780 | "optional": true, 781 | "os": [ 782 | "sunos" 783 | ] 784 | }, 785 | "node_modules/esbuild-windows-32": { 786 | "version": "0.14.0", 787 | "resolved": "https://registry.npmmirror.com/esbuild-windows-32/download/esbuild-windows-32-0.14.0.tgz", 788 | "integrity": "sha512-0h7E50JHgyLd7TkqSIH0VzBhngWspxPHuq/crDAMnh4s4tW8zWCMLIz2c1HVwHfZsh7d5+C4/yBaQeJTHXGvIA==", 789 | "cpu": [ 790 | "ia32" 791 | ], 792 | "dev": true, 793 | "optional": true, 794 | "os": [ 795 | "win32" 796 | ] 797 | }, 798 | "node_modules/esbuild-windows-64": { 799 | "version": "0.14.0", 800 | "resolved": "https://registry.npmmirror.com/esbuild-windows-64/download/esbuild-windows-64-0.14.0.tgz", 801 | "integrity": "sha512-RxnovPOoQS5Id4mbdIUm96L0GIg+ZME4FthbErw1kZZabLi9eLp1gR3vSwkZXKbK8Z76uDkSW0EN74i1XWVpiQ==", 802 | "cpu": [ 803 | "x64" 804 | ], 805 | "dev": true, 806 | "optional": true, 807 | "os": [ 808 | "win32" 809 | ] 810 | }, 811 | "node_modules/esbuild-windows-arm64": { 812 | "version": "0.14.0", 813 | "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/download/esbuild-windows-arm64-0.14.0.tgz", 814 | "integrity": "sha512-66KsVlT6lGDWgDKQsAlojxgUhZkkjVeosMVRdb913OwtcOjszceg6zFD748jzp9CUgAseHCNJqFmYOyBzneSEQ==", 815 | "cpu": [ 816 | "arm64" 817 | ], 818 | "dev": true, 819 | "optional": true, 820 | "os": [ 821 | "win32" 822 | ] 823 | }, 824 | "node_modules/escape-html": { 825 | "version": "1.0.3", 826 | "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", 827 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 828 | "dev": true 829 | }, 830 | "node_modules/escape-string-regexp": { 831 | "version": "1.0.5", 832 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 833 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 834 | "dev": true, 835 | "engines": { 836 | "node": ">=0.8.0" 837 | } 838 | }, 839 | "node_modules/esprima": { 840 | "version": "4.0.1", 841 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 842 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 843 | "dev": true, 844 | "bin": { 845 | "esparse": "bin/esparse.js", 846 | "esvalidate": "bin/esvalidate.js" 847 | }, 848 | "engines": { 849 | "node": ">=4" 850 | } 851 | }, 852 | "node_modules/extract-zip": { 853 | "version": "2.0.1", 854 | "resolved": "https://registry.nlark.com/extract-zip/download/extract-zip-2.0.1.tgz", 855 | "integrity": "sha1-Zj3KVv5G34kNXxMe9KBtIruLoTo=", 856 | "dev": true, 857 | "dependencies": { 858 | "debug": "^4.1.1", 859 | "get-stream": "^5.1.0", 860 | "yauzl": "^2.10.0" 861 | }, 862 | "bin": { 863 | "extract-zip": "cli.js" 864 | }, 865 | "engines": { 866 | "node": ">= 10.17.0" 867 | }, 868 | "optionalDependencies": { 869 | "@types/yauzl": "^2.9.1" 870 | } 871 | }, 872 | "node_modules/extract-zip/node_modules/get-stream": { 873 | "version": "5.2.0", 874 | "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz", 875 | "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=", 876 | "dev": true, 877 | "dependencies": { 878 | "pump": "^3.0.0" 879 | }, 880 | "engines": { 881 | "node": ">=8" 882 | } 883 | }, 884 | "node_modules/fd-slicer": { 885 | "version": "1.1.0", 886 | "resolved": "https://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz", 887 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 888 | "dev": true, 889 | "dependencies": { 890 | "pend": "~1.2.0" 891 | } 892 | }, 893 | "node_modules/file-type": { 894 | "version": "5.2.0", 895 | "resolved": "https://registry.npmmirror.com/file-type/download/file-type-5.2.0.tgz", 896 | "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", 897 | "dev": true, 898 | "engines": { 899 | "node": ">=4" 900 | } 901 | }, 902 | "node_modules/follow-redirects": { 903 | "version": "1.14.5", 904 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", 905 | "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", 906 | "dev": true, 907 | "funding": [ 908 | { 909 | "type": "individual", 910 | "url": "https://github.com/sponsors/RubenVerborgh" 911 | } 912 | ], 913 | "engines": { 914 | "node": ">=4.0" 915 | }, 916 | "peerDependenciesMeta": { 917 | "debug": { 918 | "optional": true 919 | } 920 | } 921 | }, 922 | "node_modules/fresh": { 923 | "version": "0.5.2", 924 | "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", 925 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 926 | "dev": true, 927 | "engines": { 928 | "node": ">= 0.6" 929 | } 930 | }, 931 | "node_modules/fs-constants": { 932 | "version": "1.0.0", 933 | "resolved": "https://registry.npm.taobao.org/fs-constants/download/fs-constants-1.0.0.tgz", 934 | "integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0=", 935 | "dev": true 936 | }, 937 | "node_modules/fs.realpath": { 938 | "version": "1.0.0", 939 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 940 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 941 | "dev": true 942 | }, 943 | "node_modules/function-bind": { 944 | "version": "1.1.1", 945 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 946 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 947 | "dev": true 948 | }, 949 | "node_modules/get-stream": { 950 | "version": "2.3.1", 951 | "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-2.3.1.tgz", 952 | "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", 953 | "dev": true, 954 | "dependencies": { 955 | "object-assign": "^4.0.1", 956 | "pinkie-promise": "^2.0.0" 957 | }, 958 | "engines": { 959 | "node": ">=0.10.0" 960 | } 961 | }, 962 | "node_modules/glob": { 963 | "version": "7.2.0", 964 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 965 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 966 | "dev": true, 967 | "dependencies": { 968 | "fs.realpath": "^1.0.0", 969 | "inflight": "^1.0.4", 970 | "inherits": "2", 971 | "minimatch": "^3.0.4", 972 | "once": "^1.3.0", 973 | "path-is-absolute": "^1.0.0" 974 | }, 975 | "engines": { 976 | "node": "*" 977 | }, 978 | "funding": { 979 | "url": "https://github.com/sponsors/isaacs" 980 | } 981 | }, 982 | "node_modules/graceful-fs": { 983 | "version": "4.2.8", 984 | "resolved": "https://registry.npmmirror.com/graceful-fs/download/graceful-fs-4.2.8.tgz", 985 | "integrity": "sha1-5BK40z9eAGWTy9PO5t+fLOu+gCo=", 986 | "dev": true 987 | }, 988 | "node_modules/has": { 989 | "version": "1.0.3", 990 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 991 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 992 | "dev": true, 993 | "dependencies": { 994 | "function-bind": "^1.1.1" 995 | }, 996 | "engines": { 997 | "node": ">= 0.4.0" 998 | } 999 | }, 1000 | "node_modules/has-flag": { 1001 | "version": "3.0.0", 1002 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1003 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1004 | "dev": true, 1005 | "engines": { 1006 | "node": ">=4" 1007 | } 1008 | }, 1009 | "node_modules/has-symbols": { 1010 | "version": "1.0.2", 1011 | "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz?cache=0&sync_timestamp=1614443557459&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.2.tgz", 1012 | "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=", 1013 | "dev": true, 1014 | "engines": { 1015 | "node": ">= 0.4" 1016 | } 1017 | }, 1018 | "node_modules/has-tostringtag": { 1019 | "version": "1.0.0", 1020 | "resolved": "https://registry.nlark.com/has-tostringtag/download/has-tostringtag-1.0.0.tgz", 1021 | "integrity": "sha1-fhM4GKfTlHNPlB5zw9P5KR5liyU=", 1022 | "dev": true, 1023 | "dependencies": { 1024 | "has-symbols": "^1.0.2" 1025 | }, 1026 | "engines": { 1027 | "node": ">= 0.4" 1028 | } 1029 | }, 1030 | "node_modules/http-assert": { 1031 | "version": "1.5.0", 1032 | "resolved": "https://registry.nlark.com/http-assert/download/http-assert-1.5.0.tgz", 1033 | "integrity": "sha1-w4nM2HrBbtLfpiRv1zuSaqAOa48=", 1034 | "dev": true, 1035 | "dependencies": { 1036 | "deep-equal": "~1.0.1", 1037 | "http-errors": "~1.8.0" 1038 | }, 1039 | "engines": { 1040 | "node": ">= 0.8" 1041 | } 1042 | }, 1043 | "node_modules/http-errors": { 1044 | "version": "1.8.1", 1045 | "resolved": "https://registry.npmmirror.com/http-errors/download/http-errors-1.8.1.tgz?cache=0&sync_timestamp=1636932153279&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.8.1.tgz", 1046 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 1047 | "dev": true, 1048 | "dependencies": { 1049 | "depd": "~1.1.2", 1050 | "inherits": "2.0.4", 1051 | "setprototypeof": "1.2.0", 1052 | "statuses": ">= 1.5.0 < 2", 1053 | "toidentifier": "1.0.1" 1054 | }, 1055 | "engines": { 1056 | "node": ">= 0.6" 1057 | } 1058 | }, 1059 | "node_modules/http-proxy-agent": { 1060 | "version": "4.0.1", 1061 | "resolved": "https://registry.npmmirror.com/http-proxy-agent/download/http-proxy-agent-4.0.1.tgz", 1062 | "integrity": "sha1-ioyO9/WTLM+VPClsqCkblap0qjo=", 1063 | "dev": true, 1064 | "dependencies": { 1065 | "@tootallnate/once": "1", 1066 | "agent-base": "6", 1067 | "debug": "4" 1068 | }, 1069 | "engines": { 1070 | "node": ">= 6" 1071 | } 1072 | }, 1073 | "node_modules/https-proxy-agent": { 1074 | "version": "5.0.0", 1075 | "resolved": "https://registry.nlark.com/https-proxy-agent/download/https-proxy-agent-5.0.0.tgz", 1076 | "integrity": "sha1-4qkFQqu2inYuCghQ9sntrf2FBrI=", 1077 | "dev": true, 1078 | "dependencies": { 1079 | "agent-base": "6", 1080 | "debug": "4" 1081 | }, 1082 | "engines": { 1083 | "node": ">= 6" 1084 | } 1085 | }, 1086 | "node_modules/ieee754": { 1087 | "version": "1.2.1", 1088 | "resolved": "https://registry.nlark.com/ieee754/download/ieee754-1.2.1.tgz", 1089 | "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=", 1090 | "dev": true 1091 | }, 1092 | "node_modules/inflight": { 1093 | "version": "1.0.6", 1094 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1095 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1096 | "dev": true, 1097 | "dependencies": { 1098 | "once": "^1.3.0", 1099 | "wrappy": "1" 1100 | } 1101 | }, 1102 | "node_modules/inherits": { 1103 | "version": "2.0.4", 1104 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1105 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1106 | "dev": true 1107 | }, 1108 | "node_modules/is-core-module": { 1109 | "version": "2.8.0", 1110 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 1111 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 1112 | "dev": true, 1113 | "dependencies": { 1114 | "has": "^1.0.3" 1115 | }, 1116 | "funding": { 1117 | "url": "https://github.com/sponsors/ljharb" 1118 | } 1119 | }, 1120 | "node_modules/is-generator-function": { 1121 | "version": "1.0.10", 1122 | "resolved": "https://registry.nlark.com/is-generator-function/download/is-generator-function-1.0.10.tgz?cache=0&sync_timestamp=1628228277651&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-generator-function%2Fdownload%2Fis-generator-function-1.0.10.tgz", 1123 | "integrity": "sha1-8VWLrxrBfg3up8BBXEODUf8rPHI=", 1124 | "dev": true, 1125 | "dependencies": { 1126 | "has-tostringtag": "^1.0.0" 1127 | }, 1128 | "engines": { 1129 | "node": ">= 0.4" 1130 | } 1131 | }, 1132 | "node_modules/is-natural-number": { 1133 | "version": "4.0.1", 1134 | "resolved": "https://registry.nlark.com/is-natural-number/download/is-natural-number-4.0.1.tgz", 1135 | "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", 1136 | "dev": true 1137 | }, 1138 | "node_modules/is-stream": { 1139 | "version": "1.1.0", 1140 | "resolved": "https://registry.nlark.com/is-stream/download/is-stream-1.1.0.tgz?cache=0&sync_timestamp=1628592752355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-stream%2Fdownload%2Fis-stream-1.1.0.tgz", 1141 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1142 | "dev": true, 1143 | "engines": { 1144 | "node": ">=0.10.0" 1145 | } 1146 | }, 1147 | "node_modules/isarray": { 1148 | "version": "1.0.0", 1149 | "resolved": "https://registry.nlark.com/isarray/download/isarray-1.0.0.tgz", 1150 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1151 | "dev": true 1152 | }, 1153 | "node_modules/jpeg-js": { 1154 | "version": "0.4.3", 1155 | "resolved": "https://registry.nlark.com/jpeg-js/download/jpeg-js-0.4.3.tgz?cache=0&sync_timestamp=1624607999320&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjpeg-js%2Fdownload%2Fjpeg-js-0.4.3.tgz", 1156 | "integrity": "sha1-YVjgnxmDrXc4E3BL6AaAVQ7/l3s=", 1157 | "dev": true 1158 | }, 1159 | "node_modules/js-tokens": { 1160 | "version": "4.0.0", 1161 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1162 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1163 | "dev": true 1164 | }, 1165 | "node_modules/js-yaml": { 1166 | "version": "3.14.1", 1167 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1168 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1169 | "dev": true, 1170 | "dependencies": { 1171 | "argparse": "^1.0.7", 1172 | "esprima": "^4.0.0" 1173 | }, 1174 | "bin": { 1175 | "js-yaml": "bin/js-yaml.js" 1176 | } 1177 | }, 1178 | "node_modules/keygrip": { 1179 | "version": "1.1.0", 1180 | "resolved": "https://registry.nlark.com/keygrip/download/keygrip-1.1.0.tgz", 1181 | "integrity": "sha1-hxsWgdXhWcYqRFsMdLYV4JF+ciY=", 1182 | "dev": true, 1183 | "dependencies": { 1184 | "tsscmp": "1.0.6" 1185 | }, 1186 | "engines": { 1187 | "node": ">= 0.6" 1188 | } 1189 | }, 1190 | "node_modules/koa": { 1191 | "version": "2.13.4", 1192 | "resolved": "https://registry.npmmirror.com/koa/download/koa-2.13.4.tgz?cache=0&sync_timestamp=1634624062001&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fkoa%2Fdownload%2Fkoa-2.13.4.tgz", 1193 | "integrity": "sha1-7lsMs54LgGnDjRFROcd0gz0yRi4=", 1194 | "dev": true, 1195 | "license": "MIT", 1196 | "dependencies": { 1197 | "accepts": "^1.3.5", 1198 | "cache-content-type": "^1.0.0", 1199 | "content-disposition": "~0.5.2", 1200 | "content-type": "^1.0.4", 1201 | "cookies": "~0.8.0", 1202 | "debug": "^4.3.2", 1203 | "delegates": "^1.0.0", 1204 | "depd": "^2.0.0", 1205 | "destroy": "^1.0.4", 1206 | "encodeurl": "^1.0.2", 1207 | "escape-html": "^1.0.3", 1208 | "fresh": "~0.5.2", 1209 | "http-assert": "^1.3.0", 1210 | "http-errors": "^1.6.3", 1211 | "is-generator-function": "^1.0.7", 1212 | "koa-compose": "^4.1.0", 1213 | "koa-convert": "^2.0.0", 1214 | "on-finished": "^2.3.0", 1215 | "only": "~0.0.2", 1216 | "parseurl": "^1.3.2", 1217 | "statuses": "^1.5.0", 1218 | "type-is": "^1.6.16", 1219 | "vary": "^1.1.2" 1220 | }, 1221 | "engines": { 1222 | "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" 1223 | } 1224 | }, 1225 | "node_modules/koa-compose": { 1226 | "version": "4.1.0", 1227 | "resolved": "https://registry.npmmirror.com/koa-compose/download/koa-compose-4.1.0.tgz", 1228 | "integrity": "sha1-UHMGuTcZAdtBEhyBLpI9DWfT6Hc=", 1229 | "dev": true 1230 | }, 1231 | "node_modules/koa-convert": { 1232 | "version": "2.0.0", 1233 | "resolved": "https://registry.nlark.com/koa-convert/download/koa-convert-2.0.0.tgz", 1234 | "integrity": "sha1-hqDETYHUBVG64i/uZwmQRXPupPU=", 1235 | "dev": true, 1236 | "dependencies": { 1237 | "co": "^4.6.0", 1238 | "koa-compose": "^4.1.0" 1239 | }, 1240 | "engines": { 1241 | "node": ">= 10" 1242 | } 1243 | }, 1244 | "node_modules/koa-morgan": { 1245 | "version": "1.0.1", 1246 | "resolved": "https://registry.nlark.com/koa-morgan/download/koa-morgan-1.0.1.tgz", 1247 | "integrity": "sha1-CAUuDODYOdPEMXi5CluzQkvvH5k=", 1248 | "dev": true, 1249 | "dependencies": { 1250 | "morgan": "^1.6.1" 1251 | } 1252 | }, 1253 | "node_modules/koa-mount": { 1254 | "version": "4.0.0", 1255 | "resolved": "https://registry.nlark.com/koa-mount/download/koa-mount-4.0.0.tgz", 1256 | "integrity": "sha1-4CZeWBmOGhTviJUUxgclT/OGMpw=", 1257 | "dev": true, 1258 | "dependencies": { 1259 | "debug": "^4.0.1", 1260 | "koa-compose": "^4.1.0" 1261 | }, 1262 | "engines": { 1263 | "node": ">= 7.6.0" 1264 | } 1265 | }, 1266 | "node_modules/koa-send": { 1267 | "version": "5.0.1", 1268 | "resolved": "https://registry.nlark.com/koa-send/download/koa-send-5.0.1.tgz", 1269 | "integrity": "sha1-Odzuv6+zldDWC+r/ujpwtPVD/nk=", 1270 | "dev": true, 1271 | "dependencies": { 1272 | "debug": "^4.1.1", 1273 | "http-errors": "^1.7.3", 1274 | "resolve-path": "^1.4.0" 1275 | }, 1276 | "engines": { 1277 | "node": ">= 8" 1278 | } 1279 | }, 1280 | "node_modules/koa-static": { 1281 | "version": "5.0.0", 1282 | "resolved": "https://registry.nlark.com/koa-static/download/koa-static-5.0.0.tgz", 1283 | "integrity": "sha1-XpL8lrU3rVIZ9CUxnJW2R3J3aUM=", 1284 | "dev": true, 1285 | "dependencies": { 1286 | "debug": "^3.1.0", 1287 | "koa-send": "^5.0.0" 1288 | }, 1289 | "engines": { 1290 | "node": ">= 7.6.0" 1291 | } 1292 | }, 1293 | "node_modules/koa-static/node_modules/debug": { 1294 | "version": "3.2.7", 1295 | "resolved": "https://registry.npmmirror.com/debug/download/debug-3.2.7.tgz", 1296 | "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=", 1297 | "dev": true, 1298 | "dependencies": { 1299 | "ms": "^2.1.1" 1300 | } 1301 | }, 1302 | "node_modules/koa/node_modules/depd": { 1303 | "version": "2.0.0", 1304 | "resolved": "https://registry.nlark.com/depd/download/depd-2.0.0.tgz", 1305 | "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=", 1306 | "dev": true, 1307 | "engines": { 1308 | "node": ">= 0.8" 1309 | } 1310 | }, 1311 | "node_modules/make-dir": { 1312 | "version": "1.3.0", 1313 | "resolved": "https://registry.nlark.com/make-dir/download/make-dir-1.3.0.tgz", 1314 | "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=", 1315 | "dev": true, 1316 | "dependencies": { 1317 | "pify": "^3.0.0" 1318 | }, 1319 | "engines": { 1320 | "node": ">=4" 1321 | } 1322 | }, 1323 | "node_modules/make-dir/node_modules/pify": { 1324 | "version": "3.0.0", 1325 | "resolved": "https://registry.nlark.com/pify/download/pify-3.0.0.tgz", 1326 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1327 | "dev": true, 1328 | "engines": { 1329 | "node": ">=4" 1330 | } 1331 | }, 1332 | "node_modules/media-typer": { 1333 | "version": "0.3.0", 1334 | "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", 1335 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 1336 | "dev": true, 1337 | "engines": { 1338 | "node": ">= 0.6" 1339 | } 1340 | }, 1341 | "node_modules/methods": { 1342 | "version": "1.1.2", 1343 | "resolved": "https://registry.nlark.com/methods/download/methods-1.1.2.tgz", 1344 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 1345 | "dev": true, 1346 | "engines": { 1347 | "node": ">= 0.6" 1348 | } 1349 | }, 1350 | "node_modules/mime": { 1351 | "version": "2.6.0", 1352 | "resolved": "https://registry.npmmirror.com/mime/download/mime-2.6.0.tgz", 1353 | "integrity": "sha1-oqaCqVzU0MsdYlfij4PafjWAA2c=", 1354 | "dev": true, 1355 | "license": "MIT", 1356 | "bin": { 1357 | "mime": "cli.js" 1358 | }, 1359 | "engines": { 1360 | "node": ">=4.0.0" 1361 | } 1362 | }, 1363 | "node_modules/mime-db": { 1364 | "version": "1.51.0", 1365 | "resolved": "https://registry.npmmirror.com/mime-db/download/mime-db-1.51.0.tgz?cache=0&sync_timestamp=1636426033377&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-db%2Fdownload%2Fmime-db-1.51.0.tgz", 1366 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", 1367 | "dev": true, 1368 | "engines": { 1369 | "node": ">= 0.6" 1370 | } 1371 | }, 1372 | "node_modules/mime-types": { 1373 | "version": "2.1.34", 1374 | "resolved": "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.34.tgz?cache=0&sync_timestamp=1636432373429&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.34.tgz", 1375 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 1376 | "dev": true, 1377 | "dependencies": { 1378 | "mime-db": "1.51.0" 1379 | }, 1380 | "engines": { 1381 | "node": ">= 0.6" 1382 | } 1383 | }, 1384 | "node_modules/minimatch": { 1385 | "version": "3.0.4", 1386 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1387 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1388 | "dev": true, 1389 | "dependencies": { 1390 | "brace-expansion": "^1.1.7" 1391 | }, 1392 | "engines": { 1393 | "node": "*" 1394 | } 1395 | }, 1396 | "node_modules/minimist": { 1397 | "version": "1.2.5", 1398 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1399 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1400 | "dev": true 1401 | }, 1402 | "node_modules/mkdirp": { 1403 | "version": "0.5.5", 1404 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1405 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1406 | "dev": true, 1407 | "dependencies": { 1408 | "minimist": "^1.2.5" 1409 | }, 1410 | "bin": { 1411 | "mkdirp": "bin/cmd.js" 1412 | } 1413 | }, 1414 | "node_modules/morgan": { 1415 | "version": "1.10.0", 1416 | "resolved": "https://registry.nlark.com/morgan/download/morgan-1.10.0.tgz", 1417 | "integrity": "sha1-CRd4q8H8R801CYJGU9rh+qtrF9c=", 1418 | "dev": true, 1419 | "dependencies": { 1420 | "basic-auth": "~2.0.1", 1421 | "debug": "2.6.9", 1422 | "depd": "~2.0.0", 1423 | "on-finished": "~2.3.0", 1424 | "on-headers": "~1.0.2" 1425 | }, 1426 | "engines": { 1427 | "node": ">= 0.8.0" 1428 | } 1429 | }, 1430 | "node_modules/morgan/node_modules/debug": { 1431 | "version": "2.6.9", 1432 | "resolved": "https://registry.npmmirror.com/debug/download/debug-2.6.9.tgz", 1433 | "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 1434 | "dev": true, 1435 | "dependencies": { 1436 | "ms": "2.0.0" 1437 | } 1438 | }, 1439 | "node_modules/morgan/node_modules/depd": { 1440 | "version": "2.0.0", 1441 | "resolved": "https://registry.nlark.com/depd/download/depd-2.0.0.tgz", 1442 | "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=", 1443 | "dev": true, 1444 | "engines": { 1445 | "node": ">= 0.8" 1446 | } 1447 | }, 1448 | "node_modules/morgan/node_modules/ms": { 1449 | "version": "2.0.0", 1450 | "resolved": "https://registry.npmmirror.com/ms/download/ms-2.0.0.tgz", 1451 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1452 | "dev": true 1453 | }, 1454 | "node_modules/ms": { 1455 | "version": "2.1.2", 1456 | "resolved": "https://registry.npmmirror.com/ms/download/ms-2.1.2.tgz", 1457 | "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", 1458 | "dev": true 1459 | }, 1460 | "node_modules/negotiator": { 1461 | "version": "0.6.2", 1462 | "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", 1463 | "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", 1464 | "dev": true, 1465 | "engines": { 1466 | "node": ">= 0.6" 1467 | } 1468 | }, 1469 | "node_modules/object-assign": { 1470 | "version": "4.1.1", 1471 | "resolved": "https://registry.nlark.com/object-assign/download/object-assign-4.1.1.tgz?cache=0&sync_timestamp=1618847240432&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz", 1472 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1473 | "dev": true, 1474 | "engines": { 1475 | "node": ">=0.10.0" 1476 | } 1477 | }, 1478 | "node_modules/on-finished": { 1479 | "version": "2.3.0", 1480 | "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", 1481 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1482 | "dev": true, 1483 | "dependencies": { 1484 | "ee-first": "1.1.1" 1485 | }, 1486 | "engines": { 1487 | "node": ">= 0.8" 1488 | } 1489 | }, 1490 | "node_modules/on-headers": { 1491 | "version": "1.0.2", 1492 | "resolved": "https://registry.nlark.com/on-headers/download/on-headers-1.0.2.tgz", 1493 | "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=", 1494 | "dev": true, 1495 | "engines": { 1496 | "node": ">= 0.8" 1497 | } 1498 | }, 1499 | "node_modules/once": { 1500 | "version": "1.4.0", 1501 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1502 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1503 | "dev": true, 1504 | "dependencies": { 1505 | "wrappy": "1" 1506 | } 1507 | }, 1508 | "node_modules/only": { 1509 | "version": "0.0.2", 1510 | "resolved": "https://registry.nlark.com/only/download/only-0.0.2.tgz", 1511 | "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", 1512 | "dev": true 1513 | }, 1514 | "node_modules/parseurl": { 1515 | "version": "1.3.3", 1516 | "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", 1517 | "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", 1518 | "dev": true, 1519 | "engines": { 1520 | "node": ">= 0.8" 1521 | } 1522 | }, 1523 | "node_modules/path-is-absolute": { 1524 | "version": "1.0.1", 1525 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1526 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1527 | "dev": true, 1528 | "engines": { 1529 | "node": ">=0.10.0" 1530 | } 1531 | }, 1532 | "node_modules/path-parse": { 1533 | "version": "1.0.7", 1534 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1535 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1536 | "dev": true 1537 | }, 1538 | "node_modules/path-to-regexp": { 1539 | "version": "6.2.0", 1540 | "resolved": "https://registry.nlark.com/path-to-regexp/download/path-to-regexp-6.2.0.tgz?cache=0&sync_timestamp=1618847046445&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-6.2.0.tgz", 1541 | "integrity": "sha1-97OAMzYQTDRoia3s5hRmkjBkXzg=", 1542 | "dev": true 1543 | }, 1544 | "node_modules/pend": { 1545 | "version": "1.2.0", 1546 | "resolved": "https://registry.nlark.com/pend/download/pend-1.2.0.tgz", 1547 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", 1548 | "dev": true 1549 | }, 1550 | "node_modules/pify": { 1551 | "version": "2.3.0", 1552 | "resolved": "https://registry.nlark.com/pify/download/pify-2.3.0.tgz", 1553 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1554 | "dev": true, 1555 | "engines": { 1556 | "node": ">=0.10.0" 1557 | } 1558 | }, 1559 | "node_modules/pinkie": { 1560 | "version": "2.0.4", 1561 | "resolved": "https://registry.nlark.com/pinkie/download/pinkie-2.0.4.tgz", 1562 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1563 | "dev": true, 1564 | "engines": { 1565 | "node": ">=0.10.0" 1566 | } 1567 | }, 1568 | "node_modules/pinkie-promise": { 1569 | "version": "2.0.1", 1570 | "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", 1571 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1572 | "dev": true, 1573 | "dependencies": { 1574 | "pinkie": "^2.0.0" 1575 | }, 1576 | "engines": { 1577 | "node": ">=0.10.0" 1578 | } 1579 | }, 1580 | "node_modules/playwright": { 1581 | "version": "1.14.1", 1582 | "resolved": "https://registry.npmmirror.com/playwright/download/playwright-1.14.1.tgz", 1583 | "integrity": "sha1-c5E9MESoWljt8TFIJFJ5IxByUy4=", 1584 | "dev": true, 1585 | "hasInstallScript": true, 1586 | "dependencies": { 1587 | "commander": "^6.1.0", 1588 | "debug": "^4.1.1", 1589 | "extract-zip": "^2.0.1", 1590 | "https-proxy-agent": "^5.0.0", 1591 | "jpeg-js": "^0.4.2", 1592 | "mime": "^2.4.6", 1593 | "pngjs": "^5.0.0", 1594 | "progress": "^2.0.3", 1595 | "proper-lockfile": "^4.1.1", 1596 | "proxy-from-env": "^1.1.0", 1597 | "rimraf": "^3.0.2", 1598 | "stack-utils": "^2.0.3", 1599 | "ws": "^7.4.6", 1600 | "yazl": "^2.5.1" 1601 | }, 1602 | "bin": { 1603 | "playwright": "lib/cli/cli.js" 1604 | }, 1605 | "engines": { 1606 | "node": ">=12" 1607 | } 1608 | }, 1609 | "node_modules/playwright/node_modules/commander": { 1610 | "version": "6.2.1", 1611 | "resolved": "https://registry.npmmirror.com/commander/download/commander-6.2.1.tgz?cache=0&sync_timestamp=1634886357672&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-6.2.1.tgz", 1612 | "integrity": "sha1-B5LraC37wyWZm7K4T93duhEKxzw=", 1613 | "dev": true, 1614 | "engines": { 1615 | "node": ">= 6" 1616 | } 1617 | }, 1618 | "node_modules/pngjs": { 1619 | "version": "5.0.0", 1620 | "resolved": "https://registry.nlark.com/pngjs/download/pngjs-5.0.0.tgz", 1621 | "integrity": "sha1-553SshV2f9nARWHAEjbflgvOf7s=", 1622 | "dev": true, 1623 | "engines": { 1624 | "node": ">=10.13.0" 1625 | } 1626 | }, 1627 | "node_modules/process-nextick-args": { 1628 | "version": "2.0.1", 1629 | "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", 1630 | "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", 1631 | "dev": true 1632 | }, 1633 | "node_modules/progress": { 1634 | "version": "2.0.3", 1635 | "resolved": "https://registry.nlark.com/progress/download/progress-2.0.3.tgz", 1636 | "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", 1637 | "dev": true, 1638 | "engines": { 1639 | "node": ">=0.4.0" 1640 | } 1641 | }, 1642 | "node_modules/proper-lockfile": { 1643 | "version": "4.1.2", 1644 | "resolved": "https://registry.nlark.com/proper-lockfile/download/proper-lockfile-4.1.2.tgz", 1645 | "integrity": "sha1-yLneKvay8WAQZ/mOAaxmuqIjFB8=", 1646 | "dev": true, 1647 | "dependencies": { 1648 | "graceful-fs": "^4.2.4", 1649 | "retry": "^0.12.0", 1650 | "signal-exit": "^3.0.2" 1651 | } 1652 | }, 1653 | "node_modules/proxy-from-env": { 1654 | "version": "1.1.0", 1655 | "resolved": "https://registry.nlark.com/proxy-from-env/download/proxy-from-env-1.1.0.tgz", 1656 | "integrity": "sha1-4QLxbKNVQkhldV0sno6k8k1Yw+I=", 1657 | "dev": true 1658 | }, 1659 | "node_modules/pump": { 1660 | "version": "3.0.0", 1661 | "resolved": "https://registry.nlark.com/pump/download/pump-3.0.0.tgz", 1662 | "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", 1663 | "dev": true, 1664 | "dependencies": { 1665 | "end-of-stream": "^1.1.0", 1666 | "once": "^1.3.1" 1667 | } 1668 | }, 1669 | "node_modules/readable-stream": { 1670 | "version": "2.3.7", 1671 | "resolved": "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz", 1672 | "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", 1673 | "dev": true, 1674 | "dependencies": { 1675 | "core-util-is": "~1.0.0", 1676 | "inherits": "~2.0.3", 1677 | "isarray": "~1.0.0", 1678 | "process-nextick-args": "~2.0.0", 1679 | "safe-buffer": "~5.1.1", 1680 | "string_decoder": "~1.1.1", 1681 | "util-deprecate": "~1.0.1" 1682 | } 1683 | }, 1684 | "node_modules/resolve": { 1685 | "version": "1.19.0", 1686 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", 1687 | "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", 1688 | "dev": true, 1689 | "dependencies": { 1690 | "is-core-module": "^2.1.0", 1691 | "path-parse": "^1.0.6" 1692 | }, 1693 | "funding": { 1694 | "url": "https://github.com/sponsors/ljharb" 1695 | } 1696 | }, 1697 | "node_modules/resolve-path": { 1698 | "version": "1.4.0", 1699 | "resolved": "https://registry.nlark.com/resolve-path/download/resolve-path-1.4.0.tgz", 1700 | "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", 1701 | "dev": true, 1702 | "dependencies": { 1703 | "http-errors": "~1.6.2", 1704 | "path-is-absolute": "1.0.1" 1705 | }, 1706 | "engines": { 1707 | "node": ">= 0.8" 1708 | } 1709 | }, 1710 | "node_modules/resolve-path/node_modules/http-errors": { 1711 | "version": "1.6.3", 1712 | "resolved": "https://registry.npmmirror.com/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1636932153279&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz", 1713 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 1714 | "dev": true, 1715 | "dependencies": { 1716 | "depd": "~1.1.2", 1717 | "inherits": "2.0.3", 1718 | "setprototypeof": "1.1.0", 1719 | "statuses": ">= 1.4.0 < 2" 1720 | }, 1721 | "engines": { 1722 | "node": ">= 0.6" 1723 | } 1724 | }, 1725 | "node_modules/resolve-path/node_modules/inherits": { 1726 | "version": "2.0.3", 1727 | "resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.3.tgz", 1728 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1729 | "dev": true 1730 | }, 1731 | "node_modules/resolve-path/node_modules/setprototypeof": { 1732 | "version": "1.1.0", 1733 | "resolved": "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.1.0.tgz", 1734 | "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", 1735 | "dev": true 1736 | }, 1737 | "node_modules/retry": { 1738 | "version": "0.12.0", 1739 | "resolved": "https://registry.nlark.com/retry/download/retry-0.12.0.tgz", 1740 | "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", 1741 | "dev": true, 1742 | "engines": { 1743 | "node": ">= 4" 1744 | } 1745 | }, 1746 | "node_modules/rimraf": { 1747 | "version": "3.0.2", 1748 | "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.2.tgz", 1749 | "integrity": "sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=", 1750 | "dev": true, 1751 | "dependencies": { 1752 | "glob": "^7.1.3" 1753 | }, 1754 | "bin": { 1755 | "rimraf": "bin.js" 1756 | } 1757 | }, 1758 | "node_modules/safe-buffer": { 1759 | "version": "5.1.2", 1760 | "resolved": "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz", 1761 | "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", 1762 | "dev": true 1763 | }, 1764 | "node_modules/seek-bzip": { 1765 | "version": "1.0.6", 1766 | "resolved": "https://registry.nlark.com/seek-bzip/download/seek-bzip-1.0.6.tgz", 1767 | "integrity": "sha1-NcQXH1WmgJFrUqB4WezztYV/IcQ=", 1768 | "dev": true, 1769 | "dependencies": { 1770 | "commander": "^2.8.1" 1771 | }, 1772 | "bin": { 1773 | "seek-bunzip": "bin/seek-bunzip", 1774 | "seek-table": "bin/seek-bzip-table" 1775 | } 1776 | }, 1777 | "node_modules/semver": { 1778 | "version": "5.7.1", 1779 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1780 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1781 | "dev": true, 1782 | "bin": { 1783 | "semver": "bin/semver" 1784 | } 1785 | }, 1786 | "node_modules/setprototypeof": { 1787 | "version": "1.2.0", 1788 | "resolved": "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.2.0.tgz", 1789 | "integrity": "sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=", 1790 | "dev": true 1791 | }, 1792 | "node_modules/signal-exit": { 1793 | "version": "3.0.6", 1794 | "resolved": "https://registry.npmmirror.com/signal-exit/download/signal-exit-3.0.6.tgz", 1795 | "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", 1796 | "dev": true 1797 | }, 1798 | "node_modules/sprintf-js": { 1799 | "version": "1.0.3", 1800 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1801 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1802 | "dev": true 1803 | }, 1804 | "node_modules/stack-utils": { 1805 | "version": "2.0.5", 1806 | "resolved": "https://registry.nlark.com/stack-utils/download/stack-utils-2.0.5.tgz", 1807 | "integrity": "sha1-0lJl/KmVFUZZ27+6O0klR3jS/dU=", 1808 | "dev": true, 1809 | "dependencies": { 1810 | "escape-string-regexp": "^2.0.0" 1811 | }, 1812 | "engines": { 1813 | "node": ">=10" 1814 | } 1815 | }, 1816 | "node_modules/stack-utils/node_modules/escape-string-regexp": { 1817 | "version": "2.0.0", 1818 | "resolved": "https://registry.nlark.com/escape-string-regexp/download/escape-string-regexp-2.0.0.tgz", 1819 | "integrity": "sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=", 1820 | "dev": true, 1821 | "engines": { 1822 | "node": ">=8" 1823 | } 1824 | }, 1825 | "node_modules/statuses": { 1826 | "version": "1.5.0", 1827 | "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1609654090567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz", 1828 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1829 | "dev": true, 1830 | "engines": { 1831 | "node": ">= 0.6" 1832 | } 1833 | }, 1834 | "node_modules/string_decoder": { 1835 | "version": "1.1.1", 1836 | "resolved": "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz", 1837 | "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", 1838 | "dev": true, 1839 | "dependencies": { 1840 | "safe-buffer": "~5.1.0" 1841 | } 1842 | }, 1843 | "node_modules/strip-dirs": { 1844 | "version": "2.1.0", 1845 | "resolved": "https://registry.nlark.com/strip-dirs/download/strip-dirs-2.1.0.tgz", 1846 | "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", 1847 | "dev": true, 1848 | "dependencies": { 1849 | "is-natural-number": "^4.0.1" 1850 | } 1851 | }, 1852 | "node_modules/supports-color": { 1853 | "version": "5.5.0", 1854 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1855 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1856 | "dev": true, 1857 | "dependencies": { 1858 | "has-flag": "^3.0.0" 1859 | }, 1860 | "engines": { 1861 | "node": ">=4" 1862 | } 1863 | }, 1864 | "node_modules/tar-stream": { 1865 | "version": "1.6.2", 1866 | "resolved": "https://registry.npm.taobao.org/tar-stream/download/tar-stream-1.6.2.tgz", 1867 | "integrity": "sha1-jqVdqzeXIlPZqa+Q/c1VmuQ1xVU=", 1868 | "dev": true, 1869 | "dependencies": { 1870 | "bl": "^1.0.0", 1871 | "buffer-alloc": "^1.2.0", 1872 | "end-of-stream": "^1.0.0", 1873 | "fs-constants": "^1.0.0", 1874 | "readable-stream": "^2.3.0", 1875 | "to-buffer": "^1.1.1", 1876 | "xtend": "^4.0.0" 1877 | }, 1878 | "engines": { 1879 | "node": ">= 0.8.0" 1880 | } 1881 | }, 1882 | "node_modules/through": { 1883 | "version": "2.3.8", 1884 | "resolved": "https://registry.nlark.com/through/download/through-2.3.8.tgz?cache=0&sync_timestamp=1618847037651&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fthrough%2Fdownload%2Fthrough-2.3.8.tgz", 1885 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1886 | "dev": true 1887 | }, 1888 | "node_modules/to-buffer": { 1889 | "version": "1.1.1", 1890 | "resolved": "https://registry.nlark.com/to-buffer/download/to-buffer-1.1.1.tgz", 1891 | "integrity": "sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=", 1892 | "dev": true 1893 | }, 1894 | "node_modules/toidentifier": { 1895 | "version": "1.0.1", 1896 | "resolved": "https://registry.npmmirror.com/toidentifier/download/toidentifier-1.0.1.tgz?cache=0&sync_timestamp=1636938499270&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ftoidentifier%2Fdownload%2Ftoidentifier-1.0.1.tgz", 1897 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 1898 | "dev": true, 1899 | "engines": { 1900 | "node": ">=0.6" 1901 | } 1902 | }, 1903 | "node_modules/tslib": { 1904 | "version": "1.14.1", 1905 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1906 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 1907 | "dev": true 1908 | }, 1909 | "node_modules/tslint": { 1910 | "version": "5.20.1", 1911 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", 1912 | "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", 1913 | "dev": true, 1914 | "dependencies": { 1915 | "@babel/code-frame": "^7.0.0", 1916 | "builtin-modules": "^1.1.1", 1917 | "chalk": "^2.3.0", 1918 | "commander": "^2.12.1", 1919 | "diff": "^4.0.1", 1920 | "glob": "^7.1.1", 1921 | "js-yaml": "^3.13.1", 1922 | "minimatch": "^3.0.4", 1923 | "mkdirp": "^0.5.1", 1924 | "resolve": "^1.3.2", 1925 | "semver": "^5.3.0", 1926 | "tslib": "^1.8.0", 1927 | "tsutils": "^2.29.0" 1928 | }, 1929 | "bin": { 1930 | "tslint": "bin/tslint" 1931 | }, 1932 | "engines": { 1933 | "node": ">=4.8.0" 1934 | }, 1935 | "peerDependencies": { 1936 | "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" 1937 | } 1938 | }, 1939 | "node_modules/tsscmp": { 1940 | "version": "1.0.6", 1941 | "resolved": "https://registry.nlark.com/tsscmp/download/tsscmp-1.0.6.tgz", 1942 | "integrity": "sha1-hbmVg6w1iexL/vgltQAKqRHWBes=", 1943 | "dev": true, 1944 | "engines": { 1945 | "node": ">=0.6.x" 1946 | } 1947 | }, 1948 | "node_modules/tsutils": { 1949 | "version": "2.29.0", 1950 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", 1951 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", 1952 | "dev": true, 1953 | "dependencies": { 1954 | "tslib": "^1.8.1" 1955 | }, 1956 | "peerDependencies": { 1957 | "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" 1958 | } 1959 | }, 1960 | "node_modules/type-is": { 1961 | "version": "1.6.18", 1962 | "resolved": "https://registry.nlark.com/type-is/download/type-is-1.6.18.tgz", 1963 | "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", 1964 | "dev": true, 1965 | "dependencies": { 1966 | "media-typer": "0.3.0", 1967 | "mime-types": "~2.1.24" 1968 | }, 1969 | "engines": { 1970 | "node": ">= 0.6" 1971 | } 1972 | }, 1973 | "node_modules/typescript": { 1974 | "version": "4.5.2", 1975 | "resolved": "https://registry.npmmirror.com/typescript/download/typescript-4.5.2.tgz", 1976 | "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", 1977 | "dev": true, 1978 | "bin": { 1979 | "tsc": "bin/tsc", 1980 | "tsserver": "bin/tsserver" 1981 | }, 1982 | "engines": { 1983 | "node": ">=4.2.0" 1984 | } 1985 | }, 1986 | "node_modules/unbzip2-stream": { 1987 | "version": "1.4.3", 1988 | "resolved": "https://registry.nlark.com/unbzip2-stream/download/unbzip2-stream-1.4.3.tgz", 1989 | "integrity": "sha1-sNoExDcTEd93HNwhXofyEwmRrOc=", 1990 | "dev": true, 1991 | "dependencies": { 1992 | "buffer": "^5.2.1", 1993 | "through": "^2.3.8" 1994 | } 1995 | }, 1996 | "node_modules/util-deprecate": { 1997 | "version": "1.0.2", 1998 | "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", 1999 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2000 | "dev": true 2001 | }, 2002 | "node_modules/vary": { 2003 | "version": "1.1.2", 2004 | "resolved": "https://registry.nlark.com/vary/download/vary-1.1.2.tgz", 2005 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 2006 | "dev": true, 2007 | "engines": { 2008 | "node": ">= 0.8" 2009 | } 2010 | }, 2011 | "node_modules/vscode-uri": { 2012 | "version": "3.0.2", 2013 | "resolved": "https://registry.nlark.com/vscode-uri/download/vscode-uri-3.0.2.tgz", 2014 | "integrity": "sha1-7P0dBmy470w6II3s26uajCPQVdA=", 2015 | "dev": true 2016 | }, 2017 | "node_modules/wrappy": { 2018 | "version": "1.0.2", 2019 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2020 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2021 | "dev": true 2022 | }, 2023 | "node_modules/ws": { 2024 | "version": "7.5.6", 2025 | "resolved": "https://registry.npmmirror.com/ws/download/ws-7.5.6.tgz", 2026 | "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", 2027 | "dev": true, 2028 | "engines": { 2029 | "node": ">=8.3.0" 2030 | }, 2031 | "peerDependencies": { 2032 | "bufferutil": "^4.0.1", 2033 | "utf-8-validate": "^5.0.2" 2034 | }, 2035 | "peerDependenciesMeta": { 2036 | "bufferutil": { 2037 | "optional": true 2038 | }, 2039 | "utf-8-validate": { 2040 | "optional": true 2041 | } 2042 | } 2043 | }, 2044 | "node_modules/xtend": { 2045 | "version": "4.0.2", 2046 | "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", 2047 | "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", 2048 | "dev": true, 2049 | "engines": { 2050 | "node": ">=0.4" 2051 | } 2052 | }, 2053 | "node_modules/yauzl": { 2054 | "version": "2.10.0", 2055 | "resolved": "https://registry.nlark.com/yauzl/download/yauzl-2.10.0.tgz", 2056 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 2057 | "dev": true, 2058 | "dependencies": { 2059 | "buffer-crc32": "~0.2.3", 2060 | "fd-slicer": "~1.1.0" 2061 | } 2062 | }, 2063 | "node_modules/yazl": { 2064 | "version": "2.5.1", 2065 | "resolved": "https://registry.nlark.com/yazl/download/yazl-2.5.1.tgz", 2066 | "integrity": "sha1-o9ZdPdZZpbCTeFDoYJ8i//orXDU=", 2067 | "dev": true, 2068 | "dependencies": { 2069 | "buffer-crc32": "~0.2.3" 2070 | } 2071 | }, 2072 | "node_modules/ylru": { 2073 | "version": "1.2.1", 2074 | "resolved": "https://registry.nlark.com/ylru/download/ylru-1.2.1.tgz", 2075 | "integrity": "sha1-9Xa2M0FUeYnB3nuiiHYJI7J/6E8=", 2076 | "dev": true, 2077 | "engines": { 2078 | "node": ">= 4.0.0" 2079 | } 2080 | } 2081 | }, 2082 | "dependencies": { 2083 | "@babel/code-frame": { 2084 | "version": "7.16.0", 2085 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", 2086 | "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", 2087 | "dev": true, 2088 | "requires": { 2089 | "@babel/highlight": "^7.16.0" 2090 | } 2091 | }, 2092 | "@babel/helper-validator-identifier": { 2093 | "version": "7.15.7", 2094 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", 2095 | "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", 2096 | "dev": true 2097 | }, 2098 | "@babel/highlight": { 2099 | "version": "7.16.0", 2100 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", 2101 | "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", 2102 | "dev": true, 2103 | "requires": { 2104 | "@babel/helper-validator-identifier": "^7.15.7", 2105 | "chalk": "^2.0.0", 2106 | "js-tokens": "^4.0.0" 2107 | } 2108 | }, 2109 | "@koa/router": { 2110 | "version": "10.1.1", 2111 | "resolved": "https://registry.nlark.com/@koa/router/download/@koa/router-10.1.1.tgz", 2112 | "integrity": "sha1-jlqFybJD4Lx3aALA3lZFYeV6X3g=", 2113 | "dev": true, 2114 | "requires": { 2115 | "debug": "^4.1.1", 2116 | "http-errors": "^1.7.3", 2117 | "koa-compose": "^4.1.0", 2118 | "methods": "^1.1.2", 2119 | "path-to-regexp": "^6.1.0" 2120 | } 2121 | }, 2122 | "@tootallnate/once": { 2123 | "version": "1.1.2", 2124 | "resolved": "https://registry.npmmirror.com/@tootallnate/once/download/@tootallnate/once-1.1.2.tgz?cache=0&sync_timestamp=1632734046275&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40tootallnate%2Fonce%2Fdownload%2F%40tootallnate%2Fonce-1.1.2.tgz", 2125 | "integrity": "sha1-zLkURTYBeaBOf+av94wA/8Hur4I=", 2126 | "dev": true 2127 | }, 2128 | "@types/mocha": { 2129 | "version": "9.0.0", 2130 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz", 2131 | "integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==", 2132 | "dev": true 2133 | }, 2134 | "@types/node": { 2135 | "version": "16.11.10", 2136 | "resolved": "https://registry.npmmirror.com/@types/node/download/@types/node-16.11.10.tgz", 2137 | "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==", 2138 | "dev": true 2139 | }, 2140 | "@types/vscode": { 2141 | "version": "1.62.0", 2142 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.62.0.tgz", 2143 | "integrity": "sha512-iGlQJ1w5e3qPUryroO6v4lxg3ql1ztdTCwQW3xEwFawdyPLoeUSv48SYfMwc7kQA7h6ThUqflZIjgKAykeF9oA==", 2144 | "dev": true 2145 | }, 2146 | "@types/yauzl": { 2147 | "version": "2.9.2", 2148 | "resolved": "https://registry.npmmirror.com/@types/yauzl/download/@types/yauzl-2.9.2.tgz", 2149 | "integrity": "sha1-xI5dVq/xREQJ45+hZLC01FUqe3o=", 2150 | "dev": true, 2151 | "optional": true, 2152 | "requires": { 2153 | "@types/node": "*" 2154 | } 2155 | }, 2156 | "@vscode/test-web": { 2157 | "version": "0.0.15", 2158 | "resolved": "https://registry.npmmirror.com/@vscode/test-web/download/@vscode/test-web-0.0.15.tgz", 2159 | "integrity": "sha1-jKym2QLVueGLjgxMwPamnUZ905w=", 2160 | "dev": true, 2161 | "requires": { 2162 | "@koa/router": "^10.1.1", 2163 | "decompress": "^4.2.1", 2164 | "decompress-targz": "^4.1.1", 2165 | "http-proxy-agent": "^4.0.1", 2166 | "https-proxy-agent": "^5.0.0", 2167 | "koa": "^2.13.1", 2168 | "koa-morgan": "^1.0.1", 2169 | "koa-mount": "^4.0.0", 2170 | "koa-static": "^5.0.0", 2171 | "minimist": "^1.2.5", 2172 | "playwright": "1.14.1", 2173 | "vscode-uri": "^3.0.2" 2174 | } 2175 | }, 2176 | "accepts": { 2177 | "version": "1.3.7", 2178 | "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", 2179 | "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", 2180 | "dev": true, 2181 | "requires": { 2182 | "mime-types": "~2.1.24", 2183 | "negotiator": "0.6.2" 2184 | } 2185 | }, 2186 | "agent-base": { 2187 | "version": "6.0.2", 2188 | "resolved": "https://registry.nlark.com/agent-base/download/agent-base-6.0.2.tgz", 2189 | "integrity": "sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c=", 2190 | "dev": true, 2191 | "requires": { 2192 | "debug": "4" 2193 | } 2194 | }, 2195 | "ansi-styles": { 2196 | "version": "3.2.1", 2197 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2198 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2199 | "dev": true, 2200 | "requires": { 2201 | "color-convert": "^1.9.0" 2202 | } 2203 | }, 2204 | "argparse": { 2205 | "version": "1.0.10", 2206 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 2207 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 2208 | "dev": true, 2209 | "requires": { 2210 | "sprintf-js": "~1.0.2" 2211 | } 2212 | }, 2213 | "axios": { 2214 | "version": "0.24.0", 2215 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", 2216 | "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", 2217 | "dev": true, 2218 | "requires": { 2219 | "follow-redirects": "^1.14.4" 2220 | } 2221 | }, 2222 | "balanced-match": { 2223 | "version": "1.0.2", 2224 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2225 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2226 | "dev": true 2227 | }, 2228 | "base64-js": { 2229 | "version": "1.5.1", 2230 | "resolved": "https://registry.nlark.com/base64-js/download/base64-js-1.5.1.tgz", 2231 | "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=", 2232 | "dev": true 2233 | }, 2234 | "basic-auth": { 2235 | "version": "2.0.1", 2236 | "resolved": "https://registry.nlark.com/basic-auth/download/basic-auth-2.0.1.tgz", 2237 | "integrity": "sha1-uZgnm/R844NEtPPPkW1Gebv1Hjo=", 2238 | "dev": true, 2239 | "requires": { 2240 | "safe-buffer": "5.1.2" 2241 | } 2242 | }, 2243 | "bl": { 2244 | "version": "1.2.3", 2245 | "resolved": "https://registry.npm.taobao.org/bl/download/bl-1.2.3.tgz?cache=0&sync_timestamp=1617381743180&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbl%2Fdownload%2Fbl-1.2.3.tgz", 2246 | "integrity": "sha1-Ho3YAULqyA1xWMnczAR/tiDgNec=", 2247 | "dev": true, 2248 | "requires": { 2249 | "readable-stream": "^2.3.5", 2250 | "safe-buffer": "^5.1.1" 2251 | } 2252 | }, 2253 | "brace-expansion": { 2254 | "version": "1.1.11", 2255 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2256 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2257 | "dev": true, 2258 | "requires": { 2259 | "balanced-match": "^1.0.0", 2260 | "concat-map": "0.0.1" 2261 | } 2262 | }, 2263 | "buffer": { 2264 | "version": "5.7.1", 2265 | "resolved": "https://registry.nlark.com/buffer/download/buffer-5.7.1.tgz", 2266 | "integrity": "sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=", 2267 | "dev": true, 2268 | "requires": { 2269 | "base64-js": "^1.3.1", 2270 | "ieee754": "^1.1.13" 2271 | } 2272 | }, 2273 | "buffer-alloc": { 2274 | "version": "1.2.0", 2275 | "resolved": "https://registry.nlark.com/buffer-alloc/download/buffer-alloc-1.2.0.tgz", 2276 | "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=", 2277 | "dev": true, 2278 | "requires": { 2279 | "buffer-alloc-unsafe": "^1.1.0", 2280 | "buffer-fill": "^1.0.0" 2281 | } 2282 | }, 2283 | "buffer-alloc-unsafe": { 2284 | "version": "1.1.0", 2285 | "resolved": "https://registry.nlark.com/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz", 2286 | "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=", 2287 | "dev": true 2288 | }, 2289 | "buffer-crc32": { 2290 | "version": "0.2.13", 2291 | "resolved": "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz", 2292 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 2293 | "dev": true 2294 | }, 2295 | "buffer-fill": { 2296 | "version": "1.0.0", 2297 | "resolved": "https://registry.nlark.com/buffer-fill/download/buffer-fill-1.0.0.tgz", 2298 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", 2299 | "dev": true 2300 | }, 2301 | "builtin-modules": { 2302 | "version": "1.1.1", 2303 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 2304 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 2305 | "dev": true 2306 | }, 2307 | "cache-content-type": { 2308 | "version": "1.0.1", 2309 | "resolved": "https://registry.nlark.com/cache-content-type/download/cache-content-type-1.0.1.tgz", 2310 | "integrity": "sha1-A1zeKwjuISn0qDFeqPAKANuhRTw=", 2311 | "dev": true, 2312 | "requires": { 2313 | "mime-types": "^2.1.18", 2314 | "ylru": "^1.2.0" 2315 | } 2316 | }, 2317 | "chalk": { 2318 | "version": "2.4.2", 2319 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2320 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2321 | "dev": true, 2322 | "requires": { 2323 | "ansi-styles": "^3.2.1", 2324 | "escape-string-regexp": "^1.0.5", 2325 | "supports-color": "^5.3.0" 2326 | } 2327 | }, 2328 | "co": { 2329 | "version": "4.6.0", 2330 | "resolved": "https://registry.nlark.com/co/download/co-4.6.0.tgz?cache=0&sync_timestamp=1624608078028&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fco%2Fdownload%2Fco-4.6.0.tgz", 2331 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 2332 | "dev": true 2333 | }, 2334 | "color-convert": { 2335 | "version": "1.9.3", 2336 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2337 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2338 | "dev": true, 2339 | "requires": { 2340 | "color-name": "1.1.3" 2341 | } 2342 | }, 2343 | "color-name": { 2344 | "version": "1.1.3", 2345 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2346 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 2347 | "dev": true 2348 | }, 2349 | "commander": { 2350 | "version": "2.20.3", 2351 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 2352 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 2353 | "dev": true 2354 | }, 2355 | "concat-map": { 2356 | "version": "0.0.1", 2357 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2358 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 2359 | "dev": true 2360 | }, 2361 | "content-disposition": { 2362 | "version": "0.5.3", 2363 | "resolved": "https://registry.nlark.com/content-disposition/download/content-disposition-0.5.3.tgz", 2364 | "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", 2365 | "dev": true, 2366 | "requires": { 2367 | "safe-buffer": "5.1.2" 2368 | } 2369 | }, 2370 | "content-type": { 2371 | "version": "1.0.4", 2372 | "resolved": "https://registry.nlark.com/content-type/download/content-type-1.0.4.tgz", 2373 | "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", 2374 | "dev": true 2375 | }, 2376 | "cookies": { 2377 | "version": "0.8.0", 2378 | "resolved": "https://registry.nlark.com/cookies/download/cookies-0.8.0.tgz", 2379 | "integrity": "sha1-EpPOSzkXQKhAbjyYcOgoxLVPP5A=", 2380 | "dev": true, 2381 | "requires": { 2382 | "depd": "~2.0.0", 2383 | "keygrip": "~1.1.0" 2384 | }, 2385 | "dependencies": { 2386 | "depd": { 2387 | "version": "2.0.0", 2388 | "resolved": "https://registry.nlark.com/depd/download/depd-2.0.0.tgz", 2389 | "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=", 2390 | "dev": true 2391 | } 2392 | } 2393 | }, 2394 | "core-util-is": { 2395 | "version": "1.0.3", 2396 | "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.3.tgz", 2397 | "integrity": "sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=", 2398 | "dev": true 2399 | }, 2400 | "debug": { 2401 | "version": "4.3.3", 2402 | "resolved": "https://registry.npmmirror.com/debug/download/debug-4.3.3.tgz", 2403 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2404 | "dev": true, 2405 | "requires": { 2406 | "ms": "2.1.2" 2407 | } 2408 | }, 2409 | "decompress": { 2410 | "version": "4.2.1", 2411 | "resolved": "https://registry.nlark.com/decompress/download/decompress-4.2.1.tgz", 2412 | "integrity": "sha1-AH9VzGpiwFWvo3wH62pO4bdz8Rg=", 2413 | "dev": true, 2414 | "requires": { 2415 | "decompress-tar": "^4.0.0", 2416 | "decompress-tarbz2": "^4.0.0", 2417 | "decompress-targz": "^4.0.0", 2418 | "decompress-unzip": "^4.0.1", 2419 | "graceful-fs": "^4.1.10", 2420 | "make-dir": "^1.0.0", 2421 | "pify": "^2.3.0", 2422 | "strip-dirs": "^2.0.0" 2423 | } 2424 | }, 2425 | "decompress-tar": { 2426 | "version": "4.1.1", 2427 | "resolved": "https://registry.nlark.com/decompress-tar/download/decompress-tar-4.1.1.tgz", 2428 | "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", 2429 | "dev": true, 2430 | "requires": { 2431 | "file-type": "^5.2.0", 2432 | "is-stream": "^1.1.0", 2433 | "tar-stream": "^1.5.2" 2434 | } 2435 | }, 2436 | "decompress-tarbz2": { 2437 | "version": "4.1.1", 2438 | "resolved": "https://registry.nlark.com/decompress-tarbz2/download/decompress-tarbz2-4.1.1.tgz", 2439 | "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", 2440 | "dev": true, 2441 | "requires": { 2442 | "decompress-tar": "^4.1.0", 2443 | "file-type": "^6.1.0", 2444 | "is-stream": "^1.1.0", 2445 | "seek-bzip": "^1.0.5", 2446 | "unbzip2-stream": "^1.0.9" 2447 | }, 2448 | "dependencies": { 2449 | "file-type": { 2450 | "version": "6.2.0", 2451 | "resolved": "https://registry.npmmirror.com/file-type/download/file-type-6.2.0.tgz", 2452 | "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=", 2453 | "dev": true 2454 | } 2455 | } 2456 | }, 2457 | "decompress-targz": { 2458 | "version": "4.1.1", 2459 | "resolved": "https://registry.nlark.com/decompress-targz/download/decompress-targz-4.1.1.tgz", 2460 | "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", 2461 | "dev": true, 2462 | "requires": { 2463 | "decompress-tar": "^4.1.1", 2464 | "file-type": "^5.2.0", 2465 | "is-stream": "^1.1.0" 2466 | } 2467 | }, 2468 | "decompress-unzip": { 2469 | "version": "4.0.1", 2470 | "resolved": "https://registry.nlark.com/decompress-unzip/download/decompress-unzip-4.0.1.tgz", 2471 | "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", 2472 | "dev": true, 2473 | "requires": { 2474 | "file-type": "^3.8.0", 2475 | "get-stream": "^2.2.0", 2476 | "pify": "^2.3.0", 2477 | "yauzl": "^2.4.2" 2478 | }, 2479 | "dependencies": { 2480 | "file-type": { 2481 | "version": "3.9.0", 2482 | "resolved": "https://registry.npmmirror.com/file-type/download/file-type-3.9.0.tgz", 2483 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", 2484 | "dev": true 2485 | } 2486 | } 2487 | }, 2488 | "deep-equal": { 2489 | "version": "1.0.1", 2490 | "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz?cache=0&sync_timestamp=1606860754950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.0.1.tgz", 2491 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", 2492 | "dev": true 2493 | }, 2494 | "delegates": { 2495 | "version": "1.0.0", 2496 | "resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz", 2497 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", 2498 | "dev": true 2499 | }, 2500 | "depd": { 2501 | "version": "1.1.2", 2502 | "resolved": "https://registry.nlark.com/depd/download/depd-1.1.2.tgz", 2503 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 2504 | "dev": true 2505 | }, 2506 | "destroy": { 2507 | "version": "1.0.4", 2508 | "resolved": "https://registry.nlark.com/destroy/download/destroy-1.0.4.tgz", 2509 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 2510 | "dev": true 2511 | }, 2512 | "diff": { 2513 | "version": "4.0.2", 2514 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 2515 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 2516 | "dev": true 2517 | }, 2518 | "ee-first": { 2519 | "version": "1.1.1", 2520 | "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", 2521 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 2522 | "dev": true 2523 | }, 2524 | "encodeurl": { 2525 | "version": "1.0.2", 2526 | "resolved": "https://registry.nlark.com/encodeurl/download/encodeurl-1.0.2.tgz", 2527 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 2528 | "dev": true 2529 | }, 2530 | "end-of-stream": { 2531 | "version": "1.4.4", 2532 | "resolved": "https://registry.nlark.com/end-of-stream/download/end-of-stream-1.4.4.tgz", 2533 | "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", 2534 | "dev": true, 2535 | "requires": { 2536 | "once": "^1.4.0" 2537 | } 2538 | }, 2539 | "esbuild": { 2540 | "version": "0.14.0", 2541 | "resolved": "https://registry.npmmirror.com/esbuild/download/esbuild-0.14.0.tgz", 2542 | "integrity": "sha512-UOnSKRAyZondxdLrOXnI/mesUmU/GvDTcajCvxoIaObzMeQcn0HyoGtvbfATnazlx799ZqFSyIZGLXFszkjy3A==", 2543 | "dev": true, 2544 | "requires": { 2545 | "esbuild-android-arm64": "0.14.0", 2546 | "esbuild-darwin-64": "0.14.0", 2547 | "esbuild-darwin-arm64": "0.14.0", 2548 | "esbuild-freebsd-64": "0.14.0", 2549 | "esbuild-freebsd-arm64": "0.14.0", 2550 | "esbuild-linux-32": "0.14.0", 2551 | "esbuild-linux-64": "0.14.0", 2552 | "esbuild-linux-arm": "0.14.0", 2553 | "esbuild-linux-arm64": "0.14.0", 2554 | "esbuild-linux-mips64le": "0.14.0", 2555 | "esbuild-linux-ppc64le": "0.14.0", 2556 | "esbuild-netbsd-64": "0.14.0", 2557 | "esbuild-openbsd-64": "0.14.0", 2558 | "esbuild-sunos-64": "0.14.0", 2559 | "esbuild-windows-32": "0.14.0", 2560 | "esbuild-windows-64": "0.14.0", 2561 | "esbuild-windows-arm64": "0.14.0" 2562 | } 2563 | }, 2564 | "esbuild-android-arm64": { 2565 | "version": "0.14.0", 2566 | "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/download/esbuild-android-arm64-0.14.0.tgz", 2567 | "integrity": "sha512-X7BjFiRRNfxPNg1aT5zw4xK1vbvX2IvDPcEp4bv0CEXgR39UzuOMUsQoG92aZgj8JGs8jxQAZc8k9dVJ1WL2BA==", 2568 | "dev": true, 2569 | "optional": true 2570 | }, 2571 | "esbuild-darwin-64": { 2572 | "version": "0.14.0", 2573 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/download/esbuild-darwin-64-0.14.0.tgz", 2574 | "integrity": "sha512-43vtt407jMp1kEXiaY0dEIGjOREax9F1+qMI0+F9tJyr06EHAofnbLL6cTmLgdPy/pMhltSvOJ8EddJrrOBgpQ==", 2575 | "dev": true, 2576 | "optional": true 2577 | }, 2578 | "esbuild-darwin-arm64": { 2579 | "version": "0.14.0", 2580 | "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/download/esbuild-darwin-arm64-0.14.0.tgz", 2581 | "integrity": "sha512-hMbT5YiBrFL763mnwR9BqNtq9XtJgJRxYs7Ad++KUd+ZhMoVE0Rs/YLe1oor9uBGhHLqQsZuJ2dUHjCsfT/iDg==", 2582 | "dev": true, 2583 | "optional": true 2584 | }, 2585 | "esbuild-freebsd-64": { 2586 | "version": "0.14.0", 2587 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/download/esbuild-freebsd-64-0.14.0.tgz", 2588 | "integrity": "sha512-mx68HRYIZo6ZiHbWk5Md+mDJoDw779yWkJQAaBnXwOkGbDeA3JmPZjp6IPfy2P+n3emK9z6g4pKiebp1tQGVoQ==", 2589 | "dev": true, 2590 | "optional": true 2591 | }, 2592 | "esbuild-freebsd-arm64": { 2593 | "version": "0.14.0", 2594 | "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/download/esbuild-freebsd-arm64-0.14.0.tgz", 2595 | "integrity": "sha512-iM8u+zTagh0WGn2FTTxi7DII/ycVzYyuf2Df6eP2ZX+vlx2FjaduhagRkpyhjfmEyhfJOrYSAR5R1biNPcA+VA==", 2596 | "dev": true, 2597 | "optional": true 2598 | }, 2599 | "esbuild-linux-32": { 2600 | "version": "0.14.0", 2601 | "resolved": "https://registry.npmmirror.com/esbuild-linux-32/download/esbuild-linux-32-0.14.0.tgz", 2602 | "integrity": "sha512-dWHotI2qlXWZyza7n85UubBj0asjpM7FTtQYDaRQKxoCJpCnSzq3aD55IJthiggZHXj2tAML9Bc5xjVLsBJR0w==", 2603 | "dev": true, 2604 | "optional": true 2605 | }, 2606 | "esbuild-linux-64": { 2607 | "version": "0.14.0", 2608 | "resolved": "https://registry.npmmirror.com/esbuild-linux-64/download/esbuild-linux-64-0.14.0.tgz", 2609 | "integrity": "sha512-7buo31kp1/yKWPm9vU44FEUwkeIROrIgnCDV9KLMLSbOjGEHBZXYJ2L0p4ZnB7Z+m5YiW7F/AfJu0/1E87nOeQ==", 2610 | "dev": true, 2611 | "optional": true 2612 | }, 2613 | "esbuild-linux-arm": { 2614 | "version": "0.14.0", 2615 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/download/esbuild-linux-arm-0.14.0.tgz", 2616 | "integrity": "sha512-fgybXQwPRT4Io01+aD+yphcLOLRVGqbSdhvaDK3qBwqUvspFsq4QkI7PeeYpuQdBZWiRKLoi9v5r90l7JO/s+g==", 2617 | "dev": true, 2618 | "optional": true 2619 | }, 2620 | "esbuild-linux-arm64": { 2621 | "version": "0.14.0", 2622 | "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/download/esbuild-linux-arm64-0.14.0.tgz", 2623 | "integrity": "sha512-9LBtCH2RkhDBwoAYksTtXljN6hlxxoL6a3ymNfXJG9JxFUQddOfhajXZdObFn/hgGkAFwx8dXqw+FnPm0FCzSg==", 2624 | "dev": true, 2625 | "optional": true 2626 | }, 2627 | "esbuild-linux-mips64le": { 2628 | "version": "0.14.0", 2629 | "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/download/esbuild-linux-mips64le-0.14.0.tgz", 2630 | "integrity": "sha512-Xz7soOqWeCWcLp15biPM08To+s0k1E/2q0pQZNQ+SY9S5H2vU4ujDXqKjxFc24G9CrOeUNEOXTkh+JldBGbTCA==", 2631 | "dev": true, 2632 | "optional": true 2633 | }, 2634 | "esbuild-linux-ppc64le": { 2635 | "version": "0.14.0", 2636 | "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/download/esbuild-linux-ppc64le-0.14.0.tgz", 2637 | "integrity": "sha512-fuBXTyUaZKxpmp43Nf0M1uI1OmZv/COcME9PG7NQ/EniwC680Xj5xQFhEBDVnvQQ+6xOnXdfPSojJq7gQxrORQ==", 2638 | "dev": true, 2639 | "optional": true 2640 | }, 2641 | "esbuild-netbsd-64": { 2642 | "version": "0.14.0", 2643 | "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/download/esbuild-netbsd-64-0.14.0.tgz", 2644 | "integrity": "sha512-pQaECTKr/iCXtn1qjwih+cvoZzbZ+P3NwLQo4uo/IesklbPTR5eF4d85L1vPFVgff+itBMxbbB7aoRznSglN3A==", 2645 | "dev": true, 2646 | "optional": true 2647 | }, 2648 | "esbuild-openbsd-64": { 2649 | "version": "0.14.0", 2650 | "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/download/esbuild-openbsd-64-0.14.0.tgz", 2651 | "integrity": "sha512-HiaqQX9HMb9u3eYvKZ86+m/paQwASJSIjXiRTFpFusypjtU2NJqWb/LiRvhfmwC6rb7YHwCSPx+juSM7M+20bA==", 2652 | "dev": true, 2653 | "optional": true 2654 | }, 2655 | "esbuild-sunos-64": { 2656 | "version": "0.14.0", 2657 | "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/download/esbuild-sunos-64-0.14.0.tgz", 2658 | "integrity": "sha512-TkMQOSiSU3fHLV3M+OKUgLZt5L7TpcBcMRvtFw1cTxAnX8eT+1qkWVLiDM8ow1C3P7PW3bkGY3LW8vOs8o/jBA==", 2659 | "dev": true, 2660 | "optional": true 2661 | }, 2662 | "esbuild-windows-32": { 2663 | "version": "0.14.0", 2664 | "resolved": "https://registry.npmmirror.com/esbuild-windows-32/download/esbuild-windows-32-0.14.0.tgz", 2665 | "integrity": "sha512-0h7E50JHgyLd7TkqSIH0VzBhngWspxPHuq/crDAMnh4s4tW8zWCMLIz2c1HVwHfZsh7d5+C4/yBaQeJTHXGvIA==", 2666 | "dev": true, 2667 | "optional": true 2668 | }, 2669 | "esbuild-windows-64": { 2670 | "version": "0.14.0", 2671 | "resolved": "https://registry.npmmirror.com/esbuild-windows-64/download/esbuild-windows-64-0.14.0.tgz", 2672 | "integrity": "sha512-RxnovPOoQS5Id4mbdIUm96L0GIg+ZME4FthbErw1kZZabLi9eLp1gR3vSwkZXKbK8Z76uDkSW0EN74i1XWVpiQ==", 2673 | "dev": true, 2674 | "optional": true 2675 | }, 2676 | "esbuild-windows-arm64": { 2677 | "version": "0.14.0", 2678 | "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/download/esbuild-windows-arm64-0.14.0.tgz", 2679 | "integrity": "sha512-66KsVlT6lGDWgDKQsAlojxgUhZkkjVeosMVRdb913OwtcOjszceg6zFD748jzp9CUgAseHCNJqFmYOyBzneSEQ==", 2680 | "dev": true, 2681 | "optional": true 2682 | }, 2683 | "escape-html": { 2684 | "version": "1.0.3", 2685 | "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", 2686 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 2687 | "dev": true 2688 | }, 2689 | "escape-string-regexp": { 2690 | "version": "1.0.5", 2691 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2692 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 2693 | "dev": true 2694 | }, 2695 | "esprima": { 2696 | "version": "4.0.1", 2697 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 2698 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 2699 | "dev": true 2700 | }, 2701 | "extract-zip": { 2702 | "version": "2.0.1", 2703 | "resolved": "https://registry.nlark.com/extract-zip/download/extract-zip-2.0.1.tgz", 2704 | "integrity": "sha1-Zj3KVv5G34kNXxMe9KBtIruLoTo=", 2705 | "dev": true, 2706 | "requires": { 2707 | "@types/yauzl": "^2.9.1", 2708 | "debug": "^4.1.1", 2709 | "get-stream": "^5.1.0", 2710 | "yauzl": "^2.10.0" 2711 | }, 2712 | "dependencies": { 2713 | "get-stream": { 2714 | "version": "5.2.0", 2715 | "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz", 2716 | "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=", 2717 | "dev": true, 2718 | "requires": { 2719 | "pump": "^3.0.0" 2720 | } 2721 | } 2722 | } 2723 | }, 2724 | "fd-slicer": { 2725 | "version": "1.1.0", 2726 | "resolved": "https://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz", 2727 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 2728 | "dev": true, 2729 | "requires": { 2730 | "pend": "~1.2.0" 2731 | } 2732 | }, 2733 | "file-type": { 2734 | "version": "5.2.0", 2735 | "resolved": "https://registry.npmmirror.com/file-type/download/file-type-5.2.0.tgz", 2736 | "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", 2737 | "dev": true 2738 | }, 2739 | "follow-redirects": { 2740 | "version": "1.14.5", 2741 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", 2742 | "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", 2743 | "dev": true 2744 | }, 2745 | "fresh": { 2746 | "version": "0.5.2", 2747 | "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", 2748 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 2749 | "dev": true 2750 | }, 2751 | "fs-constants": { 2752 | "version": "1.0.0", 2753 | "resolved": "https://registry.npm.taobao.org/fs-constants/download/fs-constants-1.0.0.tgz", 2754 | "integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0=", 2755 | "dev": true 2756 | }, 2757 | "fs.realpath": { 2758 | "version": "1.0.0", 2759 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2760 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 2761 | "dev": true 2762 | }, 2763 | "function-bind": { 2764 | "version": "1.1.1", 2765 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2766 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2767 | "dev": true 2768 | }, 2769 | "get-stream": { 2770 | "version": "2.3.1", 2771 | "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-2.3.1.tgz", 2772 | "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", 2773 | "dev": true, 2774 | "requires": { 2775 | "object-assign": "^4.0.1", 2776 | "pinkie-promise": "^2.0.0" 2777 | } 2778 | }, 2779 | "glob": { 2780 | "version": "7.2.0", 2781 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 2782 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 2783 | "dev": true, 2784 | "requires": { 2785 | "fs.realpath": "^1.0.0", 2786 | "inflight": "^1.0.4", 2787 | "inherits": "2", 2788 | "minimatch": "^3.0.4", 2789 | "once": "^1.3.0", 2790 | "path-is-absolute": "^1.0.0" 2791 | } 2792 | }, 2793 | "graceful-fs": { 2794 | "version": "4.2.8", 2795 | "resolved": "https://registry.npmmirror.com/graceful-fs/download/graceful-fs-4.2.8.tgz", 2796 | "integrity": "sha1-5BK40z9eAGWTy9PO5t+fLOu+gCo=", 2797 | "dev": true 2798 | }, 2799 | "has": { 2800 | "version": "1.0.3", 2801 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2802 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2803 | "dev": true, 2804 | "requires": { 2805 | "function-bind": "^1.1.1" 2806 | } 2807 | }, 2808 | "has-flag": { 2809 | "version": "3.0.0", 2810 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2811 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2812 | "dev": true 2813 | }, 2814 | "has-symbols": { 2815 | "version": "1.0.2", 2816 | "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz?cache=0&sync_timestamp=1614443557459&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.2.tgz", 2817 | "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=", 2818 | "dev": true 2819 | }, 2820 | "has-tostringtag": { 2821 | "version": "1.0.0", 2822 | "resolved": "https://registry.nlark.com/has-tostringtag/download/has-tostringtag-1.0.0.tgz", 2823 | "integrity": "sha1-fhM4GKfTlHNPlB5zw9P5KR5liyU=", 2824 | "dev": true, 2825 | "requires": { 2826 | "has-symbols": "^1.0.2" 2827 | } 2828 | }, 2829 | "http-assert": { 2830 | "version": "1.5.0", 2831 | "resolved": "https://registry.nlark.com/http-assert/download/http-assert-1.5.0.tgz", 2832 | "integrity": "sha1-w4nM2HrBbtLfpiRv1zuSaqAOa48=", 2833 | "dev": true, 2834 | "requires": { 2835 | "deep-equal": "~1.0.1", 2836 | "http-errors": "~1.8.0" 2837 | } 2838 | }, 2839 | "http-errors": { 2840 | "version": "1.8.1", 2841 | "resolved": "https://registry.npmmirror.com/http-errors/download/http-errors-1.8.1.tgz?cache=0&sync_timestamp=1636932153279&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.8.1.tgz", 2842 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", 2843 | "dev": true, 2844 | "requires": { 2845 | "depd": "~1.1.2", 2846 | "inherits": "2.0.4", 2847 | "setprototypeof": "1.2.0", 2848 | "statuses": ">= 1.5.0 < 2", 2849 | "toidentifier": "1.0.1" 2850 | } 2851 | }, 2852 | "http-proxy-agent": { 2853 | "version": "4.0.1", 2854 | "resolved": "https://registry.npmmirror.com/http-proxy-agent/download/http-proxy-agent-4.0.1.tgz", 2855 | "integrity": "sha1-ioyO9/WTLM+VPClsqCkblap0qjo=", 2856 | "dev": true, 2857 | "requires": { 2858 | "@tootallnate/once": "1", 2859 | "agent-base": "6", 2860 | "debug": "4" 2861 | } 2862 | }, 2863 | "https-proxy-agent": { 2864 | "version": "5.0.0", 2865 | "resolved": "https://registry.nlark.com/https-proxy-agent/download/https-proxy-agent-5.0.0.tgz", 2866 | "integrity": "sha1-4qkFQqu2inYuCghQ9sntrf2FBrI=", 2867 | "dev": true, 2868 | "requires": { 2869 | "agent-base": "6", 2870 | "debug": "4" 2871 | } 2872 | }, 2873 | "ieee754": { 2874 | "version": "1.2.1", 2875 | "resolved": "https://registry.nlark.com/ieee754/download/ieee754-1.2.1.tgz", 2876 | "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=", 2877 | "dev": true 2878 | }, 2879 | "inflight": { 2880 | "version": "1.0.6", 2881 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2882 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2883 | "dev": true, 2884 | "requires": { 2885 | "once": "^1.3.0", 2886 | "wrappy": "1" 2887 | } 2888 | }, 2889 | "inherits": { 2890 | "version": "2.0.4", 2891 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2892 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2893 | "dev": true 2894 | }, 2895 | "is-core-module": { 2896 | "version": "2.8.0", 2897 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", 2898 | "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", 2899 | "dev": true, 2900 | "requires": { 2901 | "has": "^1.0.3" 2902 | } 2903 | }, 2904 | "is-generator-function": { 2905 | "version": "1.0.10", 2906 | "resolved": "https://registry.nlark.com/is-generator-function/download/is-generator-function-1.0.10.tgz?cache=0&sync_timestamp=1628228277651&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-generator-function%2Fdownload%2Fis-generator-function-1.0.10.tgz", 2907 | "integrity": "sha1-8VWLrxrBfg3up8BBXEODUf8rPHI=", 2908 | "dev": true, 2909 | "requires": { 2910 | "has-tostringtag": "^1.0.0" 2911 | } 2912 | }, 2913 | "is-natural-number": { 2914 | "version": "4.0.1", 2915 | "resolved": "https://registry.nlark.com/is-natural-number/download/is-natural-number-4.0.1.tgz", 2916 | "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", 2917 | "dev": true 2918 | }, 2919 | "is-stream": { 2920 | "version": "1.1.0", 2921 | "resolved": "https://registry.nlark.com/is-stream/download/is-stream-1.1.0.tgz?cache=0&sync_timestamp=1628592752355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-stream%2Fdownload%2Fis-stream-1.1.0.tgz", 2922 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 2923 | "dev": true 2924 | }, 2925 | "isarray": { 2926 | "version": "1.0.0", 2927 | "resolved": "https://registry.nlark.com/isarray/download/isarray-1.0.0.tgz", 2928 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2929 | "dev": true 2930 | }, 2931 | "jpeg-js": { 2932 | "version": "0.4.3", 2933 | "resolved": "https://registry.nlark.com/jpeg-js/download/jpeg-js-0.4.3.tgz?cache=0&sync_timestamp=1624607999320&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjpeg-js%2Fdownload%2Fjpeg-js-0.4.3.tgz", 2934 | "integrity": "sha1-YVjgnxmDrXc4E3BL6AaAVQ7/l3s=", 2935 | "dev": true 2936 | }, 2937 | "js-tokens": { 2938 | "version": "4.0.0", 2939 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2940 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2941 | "dev": true 2942 | }, 2943 | "js-yaml": { 2944 | "version": "3.14.1", 2945 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 2946 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 2947 | "dev": true, 2948 | "requires": { 2949 | "argparse": "^1.0.7", 2950 | "esprima": "^4.0.0" 2951 | } 2952 | }, 2953 | "keygrip": { 2954 | "version": "1.1.0", 2955 | "resolved": "https://registry.nlark.com/keygrip/download/keygrip-1.1.0.tgz", 2956 | "integrity": "sha1-hxsWgdXhWcYqRFsMdLYV4JF+ciY=", 2957 | "dev": true, 2958 | "requires": { 2959 | "tsscmp": "1.0.6" 2960 | } 2961 | }, 2962 | "koa": { 2963 | "version": "2.13.4", 2964 | "resolved": "https://registry.npmmirror.com/koa/download/koa-2.13.4.tgz?cache=0&sync_timestamp=1634624062001&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fkoa%2Fdownload%2Fkoa-2.13.4.tgz", 2965 | "integrity": "sha1-7lsMs54LgGnDjRFROcd0gz0yRi4=", 2966 | "dev": true, 2967 | "requires": { 2968 | "accepts": "^1.3.5", 2969 | "cache-content-type": "^1.0.0", 2970 | "content-disposition": "~0.5.2", 2971 | "content-type": "^1.0.4", 2972 | "cookies": "~0.8.0", 2973 | "debug": "^4.3.2", 2974 | "delegates": "^1.0.0", 2975 | "depd": "^2.0.0", 2976 | "destroy": "^1.0.4", 2977 | "encodeurl": "^1.0.2", 2978 | "escape-html": "^1.0.3", 2979 | "fresh": "~0.5.2", 2980 | "http-assert": "^1.3.0", 2981 | "http-errors": "^1.6.3", 2982 | "is-generator-function": "^1.0.7", 2983 | "koa-compose": "^4.1.0", 2984 | "koa-convert": "^2.0.0", 2985 | "on-finished": "^2.3.0", 2986 | "only": "~0.0.2", 2987 | "parseurl": "^1.3.2", 2988 | "statuses": "^1.5.0", 2989 | "type-is": "^1.6.16", 2990 | "vary": "^1.1.2" 2991 | }, 2992 | "dependencies": { 2993 | "depd": { 2994 | "version": "2.0.0", 2995 | "resolved": "https://registry.nlark.com/depd/download/depd-2.0.0.tgz", 2996 | "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=", 2997 | "dev": true 2998 | } 2999 | } 3000 | }, 3001 | "koa-compose": { 3002 | "version": "4.1.0", 3003 | "resolved": "https://registry.npmmirror.com/koa-compose/download/koa-compose-4.1.0.tgz", 3004 | "integrity": "sha1-UHMGuTcZAdtBEhyBLpI9DWfT6Hc=", 3005 | "dev": true 3006 | }, 3007 | "koa-convert": { 3008 | "version": "2.0.0", 3009 | "resolved": "https://registry.nlark.com/koa-convert/download/koa-convert-2.0.0.tgz", 3010 | "integrity": "sha1-hqDETYHUBVG64i/uZwmQRXPupPU=", 3011 | "dev": true, 3012 | "requires": { 3013 | "co": "^4.6.0", 3014 | "koa-compose": "^4.1.0" 3015 | } 3016 | }, 3017 | "koa-morgan": { 3018 | "version": "1.0.1", 3019 | "resolved": "https://registry.nlark.com/koa-morgan/download/koa-morgan-1.0.1.tgz", 3020 | "integrity": "sha1-CAUuDODYOdPEMXi5CluzQkvvH5k=", 3021 | "dev": true, 3022 | "requires": { 3023 | "morgan": "^1.6.1" 3024 | } 3025 | }, 3026 | "koa-mount": { 3027 | "version": "4.0.0", 3028 | "resolved": "https://registry.nlark.com/koa-mount/download/koa-mount-4.0.0.tgz", 3029 | "integrity": "sha1-4CZeWBmOGhTviJUUxgclT/OGMpw=", 3030 | "dev": true, 3031 | "requires": { 3032 | "debug": "^4.0.1", 3033 | "koa-compose": "^4.1.0" 3034 | } 3035 | }, 3036 | "koa-send": { 3037 | "version": "5.0.1", 3038 | "resolved": "https://registry.nlark.com/koa-send/download/koa-send-5.0.1.tgz", 3039 | "integrity": "sha1-Odzuv6+zldDWC+r/ujpwtPVD/nk=", 3040 | "dev": true, 3041 | "requires": { 3042 | "debug": "^4.1.1", 3043 | "http-errors": "^1.7.3", 3044 | "resolve-path": "^1.4.0" 3045 | } 3046 | }, 3047 | "koa-static": { 3048 | "version": "5.0.0", 3049 | "resolved": "https://registry.nlark.com/koa-static/download/koa-static-5.0.0.tgz", 3050 | "integrity": "sha1-XpL8lrU3rVIZ9CUxnJW2R3J3aUM=", 3051 | "dev": true, 3052 | "requires": { 3053 | "debug": "^3.1.0", 3054 | "koa-send": "^5.0.0" 3055 | }, 3056 | "dependencies": { 3057 | "debug": { 3058 | "version": "3.2.7", 3059 | "resolved": "https://registry.npmmirror.com/debug/download/debug-3.2.7.tgz", 3060 | "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=", 3061 | "dev": true, 3062 | "requires": { 3063 | "ms": "^2.1.1" 3064 | } 3065 | } 3066 | } 3067 | }, 3068 | "make-dir": { 3069 | "version": "1.3.0", 3070 | "resolved": "https://registry.nlark.com/make-dir/download/make-dir-1.3.0.tgz", 3071 | "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=", 3072 | "dev": true, 3073 | "requires": { 3074 | "pify": "^3.0.0" 3075 | }, 3076 | "dependencies": { 3077 | "pify": { 3078 | "version": "3.0.0", 3079 | "resolved": "https://registry.nlark.com/pify/download/pify-3.0.0.tgz", 3080 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 3081 | "dev": true 3082 | } 3083 | } 3084 | }, 3085 | "media-typer": { 3086 | "version": "0.3.0", 3087 | "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", 3088 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 3089 | "dev": true 3090 | }, 3091 | "methods": { 3092 | "version": "1.1.2", 3093 | "resolved": "https://registry.nlark.com/methods/download/methods-1.1.2.tgz", 3094 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 3095 | "dev": true 3096 | }, 3097 | "mime": { 3098 | "version": "2.6.0", 3099 | "resolved": "https://registry.npmmirror.com/mime/download/mime-2.6.0.tgz", 3100 | "integrity": "sha1-oqaCqVzU0MsdYlfij4PafjWAA2c=", 3101 | "dev": true 3102 | }, 3103 | "mime-db": { 3104 | "version": "1.51.0", 3105 | "resolved": "https://registry.npmmirror.com/mime-db/download/mime-db-1.51.0.tgz?cache=0&sync_timestamp=1636426033377&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-db%2Fdownload%2Fmime-db-1.51.0.tgz", 3106 | "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", 3107 | "dev": true 3108 | }, 3109 | "mime-types": { 3110 | "version": "2.1.34", 3111 | "resolved": "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.34.tgz?cache=0&sync_timestamp=1636432373429&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.34.tgz", 3112 | "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", 3113 | "dev": true, 3114 | "requires": { 3115 | "mime-db": "1.51.0" 3116 | } 3117 | }, 3118 | "minimatch": { 3119 | "version": "3.0.4", 3120 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 3121 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 3122 | "dev": true, 3123 | "requires": { 3124 | "brace-expansion": "^1.1.7" 3125 | } 3126 | }, 3127 | "minimist": { 3128 | "version": "1.2.5", 3129 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 3130 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 3131 | "dev": true 3132 | }, 3133 | "mkdirp": { 3134 | "version": "0.5.5", 3135 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 3136 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 3137 | "dev": true, 3138 | "requires": { 3139 | "minimist": "^1.2.5" 3140 | } 3141 | }, 3142 | "morgan": { 3143 | "version": "1.10.0", 3144 | "resolved": "https://registry.nlark.com/morgan/download/morgan-1.10.0.tgz", 3145 | "integrity": "sha1-CRd4q8H8R801CYJGU9rh+qtrF9c=", 3146 | "dev": true, 3147 | "requires": { 3148 | "basic-auth": "~2.0.1", 3149 | "debug": "2.6.9", 3150 | "depd": "~2.0.0", 3151 | "on-finished": "~2.3.0", 3152 | "on-headers": "~1.0.2" 3153 | }, 3154 | "dependencies": { 3155 | "debug": { 3156 | "version": "2.6.9", 3157 | "resolved": "https://registry.npmmirror.com/debug/download/debug-2.6.9.tgz", 3158 | "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 3159 | "dev": true, 3160 | "requires": { 3161 | "ms": "2.0.0" 3162 | } 3163 | }, 3164 | "depd": { 3165 | "version": "2.0.0", 3166 | "resolved": "https://registry.nlark.com/depd/download/depd-2.0.0.tgz", 3167 | "integrity": "sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=", 3168 | "dev": true 3169 | }, 3170 | "ms": { 3171 | "version": "2.0.0", 3172 | "resolved": "https://registry.npmmirror.com/ms/download/ms-2.0.0.tgz", 3173 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3174 | "dev": true 3175 | } 3176 | } 3177 | }, 3178 | "ms": { 3179 | "version": "2.1.2", 3180 | "resolved": "https://registry.npmmirror.com/ms/download/ms-2.1.2.tgz", 3181 | "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", 3182 | "dev": true 3183 | }, 3184 | "negotiator": { 3185 | "version": "0.6.2", 3186 | "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", 3187 | "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", 3188 | "dev": true 3189 | }, 3190 | "object-assign": { 3191 | "version": "4.1.1", 3192 | "resolved": "https://registry.nlark.com/object-assign/download/object-assign-4.1.1.tgz?cache=0&sync_timestamp=1618847240432&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz", 3193 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 3194 | "dev": true 3195 | }, 3196 | "on-finished": { 3197 | "version": "2.3.0", 3198 | "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", 3199 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 3200 | "dev": true, 3201 | "requires": { 3202 | "ee-first": "1.1.1" 3203 | } 3204 | }, 3205 | "on-headers": { 3206 | "version": "1.0.2", 3207 | "resolved": "https://registry.nlark.com/on-headers/download/on-headers-1.0.2.tgz", 3208 | "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=", 3209 | "dev": true 3210 | }, 3211 | "once": { 3212 | "version": "1.4.0", 3213 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3214 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3215 | "dev": true, 3216 | "requires": { 3217 | "wrappy": "1" 3218 | } 3219 | }, 3220 | "only": { 3221 | "version": "0.0.2", 3222 | "resolved": "https://registry.nlark.com/only/download/only-0.0.2.tgz", 3223 | "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=", 3224 | "dev": true 3225 | }, 3226 | "parseurl": { 3227 | "version": "1.3.3", 3228 | "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", 3229 | "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", 3230 | "dev": true 3231 | }, 3232 | "path-is-absolute": { 3233 | "version": "1.0.1", 3234 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3235 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3236 | "dev": true 3237 | }, 3238 | "path-parse": { 3239 | "version": "1.0.7", 3240 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3241 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3242 | "dev": true 3243 | }, 3244 | "path-to-regexp": { 3245 | "version": "6.2.0", 3246 | "resolved": "https://registry.nlark.com/path-to-regexp/download/path-to-regexp-6.2.0.tgz?cache=0&sync_timestamp=1618847046445&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-6.2.0.tgz", 3247 | "integrity": "sha1-97OAMzYQTDRoia3s5hRmkjBkXzg=", 3248 | "dev": true 3249 | }, 3250 | "pend": { 3251 | "version": "1.2.0", 3252 | "resolved": "https://registry.nlark.com/pend/download/pend-1.2.0.tgz", 3253 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", 3254 | "dev": true 3255 | }, 3256 | "pify": { 3257 | "version": "2.3.0", 3258 | "resolved": "https://registry.nlark.com/pify/download/pify-2.3.0.tgz", 3259 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 3260 | "dev": true 3261 | }, 3262 | "pinkie": { 3263 | "version": "2.0.4", 3264 | "resolved": "https://registry.nlark.com/pinkie/download/pinkie-2.0.4.tgz", 3265 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 3266 | "dev": true 3267 | }, 3268 | "pinkie-promise": { 3269 | "version": "2.0.1", 3270 | "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", 3271 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 3272 | "dev": true, 3273 | "requires": { 3274 | "pinkie": "^2.0.0" 3275 | } 3276 | }, 3277 | "playwright": { 3278 | "version": "1.14.1", 3279 | "resolved": "https://registry.npmmirror.com/playwright/download/playwright-1.14.1.tgz", 3280 | "integrity": "sha1-c5E9MESoWljt8TFIJFJ5IxByUy4=", 3281 | "dev": true, 3282 | "requires": { 3283 | "commander": "^6.1.0", 3284 | "debug": "^4.1.1", 3285 | "extract-zip": "^2.0.1", 3286 | "https-proxy-agent": "^5.0.0", 3287 | "jpeg-js": "^0.4.2", 3288 | "mime": "^2.4.6", 3289 | "pngjs": "^5.0.0", 3290 | "progress": "^2.0.3", 3291 | "proper-lockfile": "^4.1.1", 3292 | "proxy-from-env": "^1.1.0", 3293 | "rimraf": "^3.0.2", 3294 | "stack-utils": "^2.0.3", 3295 | "ws": "^7.4.6", 3296 | "yazl": "^2.5.1" 3297 | }, 3298 | "dependencies": { 3299 | "commander": { 3300 | "version": "6.2.1", 3301 | "resolved": "https://registry.npmmirror.com/commander/download/commander-6.2.1.tgz?cache=0&sync_timestamp=1634886357672&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcommander%2Fdownload%2Fcommander-6.2.1.tgz", 3302 | "integrity": "sha1-B5LraC37wyWZm7K4T93duhEKxzw=", 3303 | "dev": true 3304 | } 3305 | } 3306 | }, 3307 | "pngjs": { 3308 | "version": "5.0.0", 3309 | "resolved": "https://registry.nlark.com/pngjs/download/pngjs-5.0.0.tgz", 3310 | "integrity": "sha1-553SshV2f9nARWHAEjbflgvOf7s=", 3311 | "dev": true 3312 | }, 3313 | "process-nextick-args": { 3314 | "version": "2.0.1", 3315 | "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", 3316 | "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", 3317 | "dev": true 3318 | }, 3319 | "progress": { 3320 | "version": "2.0.3", 3321 | "resolved": "https://registry.nlark.com/progress/download/progress-2.0.3.tgz", 3322 | "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", 3323 | "dev": true 3324 | }, 3325 | "proper-lockfile": { 3326 | "version": "4.1.2", 3327 | "resolved": "https://registry.nlark.com/proper-lockfile/download/proper-lockfile-4.1.2.tgz", 3328 | "integrity": "sha1-yLneKvay8WAQZ/mOAaxmuqIjFB8=", 3329 | "dev": true, 3330 | "requires": { 3331 | "graceful-fs": "^4.2.4", 3332 | "retry": "^0.12.0", 3333 | "signal-exit": "^3.0.2" 3334 | } 3335 | }, 3336 | "proxy-from-env": { 3337 | "version": "1.1.0", 3338 | "resolved": "https://registry.nlark.com/proxy-from-env/download/proxy-from-env-1.1.0.tgz", 3339 | "integrity": "sha1-4QLxbKNVQkhldV0sno6k8k1Yw+I=", 3340 | "dev": true 3341 | }, 3342 | "pump": { 3343 | "version": "3.0.0", 3344 | "resolved": "https://registry.nlark.com/pump/download/pump-3.0.0.tgz", 3345 | "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", 3346 | "dev": true, 3347 | "requires": { 3348 | "end-of-stream": "^1.1.0", 3349 | "once": "^1.3.1" 3350 | } 3351 | }, 3352 | "readable-stream": { 3353 | "version": "2.3.7", 3354 | "resolved": "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz", 3355 | "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", 3356 | "dev": true, 3357 | "requires": { 3358 | "core-util-is": "~1.0.0", 3359 | "inherits": "~2.0.3", 3360 | "isarray": "~1.0.0", 3361 | "process-nextick-args": "~2.0.0", 3362 | "safe-buffer": "~5.1.1", 3363 | "string_decoder": "~1.1.1", 3364 | "util-deprecate": "~1.0.1" 3365 | } 3366 | }, 3367 | "resolve": { 3368 | "version": "1.19.0", 3369 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", 3370 | "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", 3371 | "dev": true, 3372 | "requires": { 3373 | "is-core-module": "^2.1.0", 3374 | "path-parse": "^1.0.6" 3375 | } 3376 | }, 3377 | "resolve-path": { 3378 | "version": "1.4.0", 3379 | "resolved": "https://registry.nlark.com/resolve-path/download/resolve-path-1.4.0.tgz", 3380 | "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=", 3381 | "dev": true, 3382 | "requires": { 3383 | "http-errors": "~1.6.2", 3384 | "path-is-absolute": "1.0.1" 3385 | }, 3386 | "dependencies": { 3387 | "http-errors": { 3388 | "version": "1.6.3", 3389 | "resolved": "https://registry.npmmirror.com/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1636932153279&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz", 3390 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 3391 | "dev": true, 3392 | "requires": { 3393 | "depd": "~1.1.2", 3394 | "inherits": "2.0.3", 3395 | "setprototypeof": "1.1.0", 3396 | "statuses": ">= 1.4.0 < 2" 3397 | } 3398 | }, 3399 | "inherits": { 3400 | "version": "2.0.3", 3401 | "resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.3.tgz", 3402 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 3403 | "dev": true 3404 | }, 3405 | "setprototypeof": { 3406 | "version": "1.1.0", 3407 | "resolved": "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.1.0.tgz", 3408 | "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", 3409 | "dev": true 3410 | } 3411 | } 3412 | }, 3413 | "retry": { 3414 | "version": "0.12.0", 3415 | "resolved": "https://registry.nlark.com/retry/download/retry-0.12.0.tgz", 3416 | "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", 3417 | "dev": true 3418 | }, 3419 | "rimraf": { 3420 | "version": "3.0.2", 3421 | "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.2.tgz", 3422 | "integrity": "sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=", 3423 | "dev": true, 3424 | "requires": { 3425 | "glob": "^7.1.3" 3426 | } 3427 | }, 3428 | "safe-buffer": { 3429 | "version": "5.1.2", 3430 | "resolved": "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz", 3431 | "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", 3432 | "dev": true 3433 | }, 3434 | "seek-bzip": { 3435 | "version": "1.0.6", 3436 | "resolved": "https://registry.nlark.com/seek-bzip/download/seek-bzip-1.0.6.tgz", 3437 | "integrity": "sha1-NcQXH1WmgJFrUqB4WezztYV/IcQ=", 3438 | "dev": true, 3439 | "requires": { 3440 | "commander": "^2.8.1" 3441 | } 3442 | }, 3443 | "semver": { 3444 | "version": "5.7.1", 3445 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3446 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 3447 | "dev": true 3448 | }, 3449 | "setprototypeof": { 3450 | "version": "1.2.0", 3451 | "resolved": "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.2.0.tgz", 3452 | "integrity": "sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=", 3453 | "dev": true 3454 | }, 3455 | "signal-exit": { 3456 | "version": "3.0.6", 3457 | "resolved": "https://registry.npmmirror.com/signal-exit/download/signal-exit-3.0.6.tgz", 3458 | "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", 3459 | "dev": true 3460 | }, 3461 | "sprintf-js": { 3462 | "version": "1.0.3", 3463 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3464 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3465 | "dev": true 3466 | }, 3467 | "stack-utils": { 3468 | "version": "2.0.5", 3469 | "resolved": "https://registry.nlark.com/stack-utils/download/stack-utils-2.0.5.tgz", 3470 | "integrity": "sha1-0lJl/KmVFUZZ27+6O0klR3jS/dU=", 3471 | "dev": true, 3472 | "requires": { 3473 | "escape-string-regexp": "^2.0.0" 3474 | }, 3475 | "dependencies": { 3476 | "escape-string-regexp": { 3477 | "version": "2.0.0", 3478 | "resolved": "https://registry.nlark.com/escape-string-regexp/download/escape-string-regexp-2.0.0.tgz", 3479 | "integrity": "sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=", 3480 | "dev": true 3481 | } 3482 | } 3483 | }, 3484 | "statuses": { 3485 | "version": "1.5.0", 3486 | "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1609654090567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz", 3487 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 3488 | "dev": true 3489 | }, 3490 | "string_decoder": { 3491 | "version": "1.1.1", 3492 | "resolved": "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz", 3493 | "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", 3494 | "dev": true, 3495 | "requires": { 3496 | "safe-buffer": "~5.1.0" 3497 | } 3498 | }, 3499 | "strip-dirs": { 3500 | "version": "2.1.0", 3501 | "resolved": "https://registry.nlark.com/strip-dirs/download/strip-dirs-2.1.0.tgz", 3502 | "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", 3503 | "dev": true, 3504 | "requires": { 3505 | "is-natural-number": "^4.0.1" 3506 | } 3507 | }, 3508 | "supports-color": { 3509 | "version": "5.5.0", 3510 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3511 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3512 | "dev": true, 3513 | "requires": { 3514 | "has-flag": "^3.0.0" 3515 | } 3516 | }, 3517 | "tar-stream": { 3518 | "version": "1.6.2", 3519 | "resolved": "https://registry.npm.taobao.org/tar-stream/download/tar-stream-1.6.2.tgz", 3520 | "integrity": "sha1-jqVdqzeXIlPZqa+Q/c1VmuQ1xVU=", 3521 | "dev": true, 3522 | "requires": { 3523 | "bl": "^1.0.0", 3524 | "buffer-alloc": "^1.2.0", 3525 | "end-of-stream": "^1.0.0", 3526 | "fs-constants": "^1.0.0", 3527 | "readable-stream": "^2.3.0", 3528 | "to-buffer": "^1.1.1", 3529 | "xtend": "^4.0.0" 3530 | } 3531 | }, 3532 | "through": { 3533 | "version": "2.3.8", 3534 | "resolved": "https://registry.nlark.com/through/download/through-2.3.8.tgz?cache=0&sync_timestamp=1618847037651&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fthrough%2Fdownload%2Fthrough-2.3.8.tgz", 3535 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 3536 | "dev": true 3537 | }, 3538 | "to-buffer": { 3539 | "version": "1.1.1", 3540 | "resolved": "https://registry.nlark.com/to-buffer/download/to-buffer-1.1.1.tgz", 3541 | "integrity": "sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=", 3542 | "dev": true 3543 | }, 3544 | "toidentifier": { 3545 | "version": "1.0.1", 3546 | "resolved": "https://registry.npmmirror.com/toidentifier/download/toidentifier-1.0.1.tgz?cache=0&sync_timestamp=1636938499270&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ftoidentifier%2Fdownload%2Ftoidentifier-1.0.1.tgz", 3547 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 3548 | "dev": true 3549 | }, 3550 | "tslib": { 3551 | "version": "1.14.1", 3552 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 3553 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 3554 | "dev": true 3555 | }, 3556 | "tslint": { 3557 | "version": "5.20.1", 3558 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", 3559 | "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", 3560 | "dev": true, 3561 | "requires": { 3562 | "@babel/code-frame": "^7.0.0", 3563 | "builtin-modules": "^1.1.1", 3564 | "chalk": "^2.3.0", 3565 | "commander": "^2.12.1", 3566 | "diff": "^4.0.1", 3567 | "glob": "^7.1.1", 3568 | "js-yaml": "^3.13.1", 3569 | "minimatch": "^3.0.4", 3570 | "mkdirp": "^0.5.1", 3571 | "resolve": "^1.3.2", 3572 | "semver": "^5.3.0", 3573 | "tslib": "^1.8.0", 3574 | "tsutils": "^2.29.0" 3575 | } 3576 | }, 3577 | "tsscmp": { 3578 | "version": "1.0.6", 3579 | "resolved": "https://registry.nlark.com/tsscmp/download/tsscmp-1.0.6.tgz", 3580 | "integrity": "sha1-hbmVg6w1iexL/vgltQAKqRHWBes=", 3581 | "dev": true 3582 | }, 3583 | "tsutils": { 3584 | "version": "2.29.0", 3585 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", 3586 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", 3587 | "dev": true, 3588 | "requires": { 3589 | "tslib": "^1.8.1" 3590 | } 3591 | }, 3592 | "type-is": { 3593 | "version": "1.6.18", 3594 | "resolved": "https://registry.nlark.com/type-is/download/type-is-1.6.18.tgz", 3595 | "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", 3596 | "dev": true, 3597 | "requires": { 3598 | "media-typer": "0.3.0", 3599 | "mime-types": "~2.1.24" 3600 | } 3601 | }, 3602 | "typescript": { 3603 | "version": "4.5.2", 3604 | "resolved": "https://registry.npmmirror.com/typescript/download/typescript-4.5.2.tgz", 3605 | "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", 3606 | "dev": true 3607 | }, 3608 | "unbzip2-stream": { 3609 | "version": "1.4.3", 3610 | "resolved": "https://registry.nlark.com/unbzip2-stream/download/unbzip2-stream-1.4.3.tgz", 3611 | "integrity": "sha1-sNoExDcTEd93HNwhXofyEwmRrOc=", 3612 | "dev": true, 3613 | "requires": { 3614 | "buffer": "^5.2.1", 3615 | "through": "^2.3.8" 3616 | } 3617 | }, 3618 | "util-deprecate": { 3619 | "version": "1.0.2", 3620 | "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", 3621 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3622 | "dev": true 3623 | }, 3624 | "vary": { 3625 | "version": "1.1.2", 3626 | "resolved": "https://registry.nlark.com/vary/download/vary-1.1.2.tgz", 3627 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 3628 | "dev": true 3629 | }, 3630 | "vscode-uri": { 3631 | "version": "3.0.2", 3632 | "resolved": "https://registry.nlark.com/vscode-uri/download/vscode-uri-3.0.2.tgz", 3633 | "integrity": "sha1-7P0dBmy470w6II3s26uajCPQVdA=", 3634 | "dev": true 3635 | }, 3636 | "wrappy": { 3637 | "version": "1.0.2", 3638 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3639 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3640 | "dev": true 3641 | }, 3642 | "ws": { 3643 | "version": "7.5.6", 3644 | "resolved": "https://registry.npmmirror.com/ws/download/ws-7.5.6.tgz", 3645 | "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", 3646 | "dev": true, 3647 | "requires": {} 3648 | }, 3649 | "xtend": { 3650 | "version": "4.0.2", 3651 | "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", 3652 | "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", 3653 | "dev": true 3654 | }, 3655 | "yauzl": { 3656 | "version": "2.10.0", 3657 | "resolved": "https://registry.nlark.com/yauzl/download/yauzl-2.10.0.tgz", 3658 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 3659 | "dev": true, 3660 | "requires": { 3661 | "buffer-crc32": "~0.2.3", 3662 | "fd-slicer": "~1.1.0" 3663 | } 3664 | }, 3665 | "yazl": { 3666 | "version": "2.5.1", 3667 | "resolved": "https://registry.nlark.com/yazl/download/yazl-2.5.1.tgz", 3668 | "integrity": "sha1-o9ZdPdZZpbCTeFDoYJ8i//orXDU=", 3669 | "dev": true, 3670 | "requires": { 3671 | "buffer-crc32": "~0.2.3" 3672 | } 3673 | }, 3674 | "ylru": { 3675 | "version": "1.2.1", 3676 | "resolved": "https://registry.nlark.com/ylru/download/ylru-1.2.1.tgz", 3677 | "integrity": "sha1-9Xa2M0FUeYnB3nuiiHYJI7J/6E8=", 3678 | "dev": true 3679 | } 3680 | } 3681 | } 3682 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "asoul", 3 | "displayName": "A-SOUL 鼓励师", 4 | "description": "写代码不再孤单,有A-SOUL与你同在", 5 | "version": "0.5.6", 6 | "publisher": "as042971", 7 | "icon": "images/logo.png", 8 | "engines": { 9 | "vscode": "^1.61.0" 10 | }, 11 | "categories": [ 12 | "Other" 13 | ], 14 | "keywords": [ 15 | "A-SOUL", 16 | "提醒", 17 | "鼓励" 18 | ], 19 | "bugs": { 20 | "url": "https://github.com/as042971/vscode-asoul/issues", 21 | "email": "as042971@outlook.com" 22 | }, 23 | "homepage": "https://github.com/as042971/vscode-asoul/blob/master/README.md", 24 | "repository": { 25 | "type": "git", 26 | "url": "https://github.com/as042971/vscode-asoul.git" 27 | }, 28 | "activationEvents": [ 29 | "onCommand:asoul.showReminderView", 30 | "onCommand:asoul.openGallery", 31 | "onStartupFinished" 32 | ], 33 | "browser": "./dist/extension.min.js", 34 | "contributes": { 35 | "commands": [ 36 | { 37 | "command": "asoul.showReminderView", 38 | "title": "打开提醒页面", 39 | "category": "asoul" 40 | }, 41 | { 42 | "command": "asoul.openGallery", 43 | "title": "打开二创画廊 (默认浏览器)", 44 | "category": "asoul" 45 | } 46 | ], 47 | "configuration": { 48 | "type": "object", 49 | "title": "A-SOUL 鼓励师", 50 | "properties": { 51 | "asoul.reminderViewIntervalInMinutes": { 52 | "type": "number", 53 | "default": 60, 54 | "description": "展示提醒页面的时间间隔(分钟)" 55 | }, 56 | "asoul.title": { 57 | "type": "string", 58 | "default": "亲爱的一个魂儿,代码写久了,该休息啦~", 59 | "description": "默认的页面内展示文字" 60 | }, 61 | "asoul.titleAva": { 62 | "type": "string", 63 | "default": "亲爱的顶碗人,代码写久了,该休息啦~ 要天天开心呀", 64 | "description": "🎸向晚🎸相关图片的页面内展示文字" 65 | }, 66 | "asoul.titleBella": { 67 | "type": "string", 68 | "default": "亲爱的贝极星,代码写久了,该休息啦~ 要多多运动,身体健康吖", 69 | "description": "💃贝拉💃相关图片的页面内展示文字" 70 | }, 71 | "asoul.titleCarol": { 72 | "type": "string", 73 | "default": "亲爱的皇珈骑士,代码写久了,该休息啦~ 今天也是酷酷的捏", 74 | "description": "🎤珈乐🎤相关图片的页面内展示文字" 75 | }, 76 | "asoul.titleDiana": { 77 | "type": "string", 78 | "default": "亲爱的嘉心糖,代码写久了,该休息啦~ 要注意劳逸结合喔", 79 | "description": "🎀嘉然🎀相关图片的页面内展示文字" 80 | }, 81 | "asoul.titleEileen": { 82 | "type": "string", 83 | "default": "亲爱的奶淇琳,代码写久了,该休息啦~ 想要陪你双向奔赴", 84 | "description": "💄乃琳💄相关图片的页面内展示文字" 85 | }, 86 | "asoul.titleOfficial": { 87 | "type": "string", 88 | "default": "小伙伴你好,代码写久了,该休息啦~ 练习太极强身健体", 89 | "description": "🦙阿草🦙相关图片的页面内展示文字" 90 | }, 91 | "asoul.type": { 92 | "type": "string", 93 | "default": "random", 94 | "enum": [ 95 | "url", 96 | "random", 97 | "default", 98 | "niuniu", 99 | "cao", 100 | "mix" 101 | ], 102 | "enumDescriptions": [ 103 | "自定义网图", 104 | "随机二创", 105 | "官方海报", 106 | "勇敢牛牛,不怕困难!", 107 | "狂暴鸿儒", 108 | "测手气(混合模式,90%概率随机二创,5%概率牛牛鼓励师,5%概率阿草鼓励师)" 109 | ], 110 | "description": "图片来源" 111 | }, 112 | "asoul.customImages": { 113 | "type": "array", 114 | "default": [], 115 | "items": { 116 | "type": "string" 117 | }, 118 | "markdownDescription": "用户设置图片地址(请将`#asoul.type#`设置为`url`以使用此配置)" 119 | }, 120 | "asoul.notification": { 121 | "type": "boolean", 122 | "default": true, 123 | "description": "防社死模式:通过右下角消息框提醒休息,而非直接弹出页面" 124 | } 125 | } 126 | } 127 | }, 128 | "scripts": { 129 | "esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=dist/extension.min.js --external:vscode --format=cjs --platform=node", 130 | "vscode:prepublish": "npm run esbuild-base -- --minify", 131 | "esbuild": "npm run esbuild-base -- --sourcemap", 132 | "esbuild-watch": "npm run esbuild-base -- --sourcemap --watch", 133 | "open-in-browser": "vscode-test-web --extensionDevelopmentPath=. .", 134 | "test-compile": "tsc -p ./", 135 | "compile": "tsc -p ./", 136 | "watch": "tsc -watch -p ./" 137 | }, 138 | "devDependencies": { 139 | "@types/mocha": "^9.0.0", 140 | "@types/node": "^16.11.10", 141 | "@types/vscode": "^1.61.0", 142 | "@vscode/test-web": "^0.0.15", 143 | "axios": ">=0.24.0", 144 | "esbuild": "^0.14.0", 145 | "tslint": "^5.20.1", 146 | "typescript": "^4.5.2" 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /screenshot/logoHD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AS042971/vscode-asoul/a6c19cdb4856c25f31a0c6ba2c7408145b02a82d/screenshot/logoHD.png -------------------------------------------------------------------------------- /screenshot/notification.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AS042971/vscode-asoul/a6c19cdb4856c25f31a0c6ba2c7408145b02a82d/screenshot/notification.jpg -------------------------------------------------------------------------------- /screenshot/usage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AS042971/vscode-asoul/a6c19cdb4856c25f31a0c6ba2c7408145b02a82d/screenshot/usage.jpg -------------------------------------------------------------------------------- /src/asset.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import axios from 'axios' 3 | import { Utility } from './utility'; 4 | 5 | export interface ASoulTag { 6 | tag_id: number 7 | tag_title: string 8 | } 9 | export interface ASoulOwner { 10 | name: string 11 | uid: number 12 | } 13 | export interface ASoulGetRandomPicResult { 14 | img: string, 15 | dy_url: string, 16 | tags: ASoulTag[], 17 | owner: ASoulOwner 18 | } 19 | export interface ASoulDefaultPicResult { 20 | img: string, 21 | tag: string 22 | } 23 | export type ImageSource = ASoulGetRandomPicResult | ASoulDefaultPicResult | vscode.Uri | string 24 | export function isASoulGetRandomPicResult(source: ImageSource): source is ASoulGetRandomPicResult { 25 | const result = source as ASoulGetRandomPicResult; 26 | return result.img !== undefined && result.dy_url !== undefined && result.tags !== undefined; 27 | } 28 | export function isASoulDefaultPicResult(source: ImageSource): source is ASoulDefaultPicResult { 29 | const result = source as ASoulDefaultPicResult; 30 | return result.img !== undefined && result.tag !== undefined; 31 | } 32 | export function isUri(source: ImageSource): source is vscode.Uri { 33 | const result = source as vscode.Uri; 34 | return result.path !== undefined; 35 | } 36 | 37 | export default class Asset { 38 | public readonly TYPE_URL_IMAGE = 'url'; 39 | public readonly TYPE_RANDOM = 'random'; 40 | public readonly TYPE_DEFAULT = 'default'; 41 | public readonly TYPE_CAO = "cao"; 42 | public readonly TYPE_NIUNIU = "niuniu"; 43 | public readonly TYPE_MIX = "mix"; 44 | 45 | public readonly NAME_AVA = 'ava'; 46 | public readonly NAME_BELLA = 'bella'; 47 | public readonly NAME_CAROL = 'carol'; 48 | public readonly NAME_DIANA = 'diana'; 49 | public readonly NAME_EILEEN = 'eileen'; 50 | public readonly NAME_OTHERS = 'others'; 51 | 52 | public async getImageUri(): Promise { 53 | const type: string = this.getConfigType(); 54 | let images: ImageSource[]; 55 | 56 | if (type === this.TYPE_RANDOM) { 57 | images = await this.getRandomImages(); 58 | } else if (type === this.TYPE_URL_IMAGE) { 59 | images = this.getCustomImages(); 60 | } else if (type === this.TYPE_CAO) { 61 | images = this.getCaoImages(); 62 | } else if (type === this.TYPE_NIUNIU) { 63 | images = this.getNiuImages(); 64 | } else if (type === this.TYPE_MIX) { 65 | // generate random number from 0 to 100 66 | let random = Math.floor(Math.random() * 100); 67 | if (random < 90) { 68 | images = await this.getRandomImages(); 69 | } else if (random < 95) { 70 | images = this.getCaoImages(); 71 | } else { 72 | images = this.getNiuImages(); 73 | } 74 | } else { 75 | images = this.getDefaultImages(); 76 | } 77 | // user forget setting customImages, get random images 78 | if (type === this.TYPE_URL_IMAGE && images.length === 0) { 79 | images = await this.getRandomImages(); 80 | } 81 | // maybe offline 82 | if (images.length === 0) { 83 | images = this.getDefaultImages(); 84 | } 85 | const image = this.getRandomOne(images); 86 | 87 | return image; 88 | } 89 | 90 | protected getRandomOne(images: ImageSource[]): ImageSource { 91 | const n = Math.floor(Math.random() * images.length + 1) - 1; 92 | return images[n]; 93 | } 94 | 95 | protected getDefaultImages(): ASoulDefaultPicResult[] { 96 | return [ 97 | {img: 'https://i0.hdslb.com/bfs/album/e50ff4910f8e9f50638e5d00692736fe5382cd5f.jpg', tag: 'ava'}, 98 | {img: 'https://i0.hdslb.com/bfs/album/5b8478af1cd42c4121195d6c970ef895e872c2d4.jpg', tag: 'bella'}, 99 | {img: 'https://i0.hdslb.com/bfs/album/6b0225adb6da22810eab0343d04b54607a4cadef.jpg', tag: 'carol'}, 100 | {img: 'https://i0.hdslb.com/bfs/album/49f2c78bf7153326f2fcd80b589111cb4054d053.jpg', tag: 'diana'}, 101 | {img: 'https://i0.hdslb.com/bfs/album/052bad0f2525b44f5d00afb764d8fcae19798520.jpg', tag: 'eileen'} 102 | ] 103 | } 104 | 105 | protected getCaoImages(): ASoulDefaultPicResult[] { 106 | let uris = [ 107 | 'https://i0.hdslb.com/bfs/album/57ad5c6ac6e924066339065b0afb852f53da451d.png', 108 | 'https://i0.hdslb.com/bfs/album/64d0c8eb810e17cf3e1194db771e82a75d484cad.png', 109 | 110 | 'https://i0.hdslb.com/bfs/album/b43d6f55809060f4015f85028bcc04267c90b07f.gif', 111 | 'https://i0.hdslb.com/bfs/album/6d6682adb6e6691e9e4fc1e16f9946a43031d3ae.gif', 112 | 'https://i0.hdslb.com/bfs/album/06e0cf94f815dcd503bc7a06af66601545fada3b.gif', 113 | 'https://i0.hdslb.com/bfs/album/d5d2fb54828ab5c582fdf4d362ea3ef67f511932.gif', 114 | 'https://i0.hdslb.com/bfs/album/f7e3edf04f30e8bce3e5b1bb164aa2e363e18761.gif', 115 | 'https://i0.hdslb.com/bfs/album/f41087048f5df564ff223a3b88f3ba12a6446962.gif', 116 | 'https://i0.hdslb.com/bfs/album/91c27b71a9b65d3e344f11dcc1103633ed07beab.gif', 117 | 'https://i0.hdslb.com/bfs/album/dfd12760220b806bda6d4cffb745eef711ce768a.gif' 118 | ]; 119 | let results = [] as ASoulDefaultPicResult[] 120 | uris.forEach((uri, _, __) => { 121 | results.push({img: uri, tag: 'cao'}); 122 | }) 123 | return results; 124 | } 125 | 126 | protected getNiuImages(): ASoulDefaultPicResult[] { 127 | return [{ img: 'https://s3.bmp.ovh/imgs/2021/11/cd64f50b66155cb5.gif', tag: 'niuniu' }]; 128 | } 129 | 130 | protected getConfigType(): string { 131 | return Utility.getConfiguration().get('type', 'random'); 132 | } 133 | 134 | protected getCustomImages() { 135 | return Utility.getConfiguration().get('customImages', []); 136 | } 137 | 138 | public async getRandomImages() { 139 | try { 140 | const response = await axios.get( 141 | "https://api.asoulfanart.com:8000/getRandomPic", 142 | { timeout: 8000 }); 143 | return [response.data]; 144 | } catch (err) { 145 | return [] as ASoulGetRandomPicResult[]; 146 | } 147 | } 148 | 149 | public getTitle(): string { 150 | return Utility.getConfiguration().get('title', ''); 151 | } 152 | 153 | public getName(tags: ASoulTag[]): string { 154 | let tagsCnt = 0; 155 | let name = this.NAME_OTHERS; 156 | tags.forEach(element => { 157 | if (element.tag_title.includes('向晚') && name != this.NAME_AVA) { 158 | tagsCnt++; 159 | name = this.NAME_AVA; 160 | } 161 | if (element.tag_title.includes('贝拉') && name != this.NAME_BELLA) { 162 | tagsCnt++; 163 | name = this.NAME_BELLA; 164 | } 165 | if (element.tag_title.includes('珈乐') && name != this.NAME_CAROL) { 166 | tagsCnt++; 167 | name = this.NAME_CAROL; 168 | } 169 | if (element.tag_title.includes('嘉然') && name != this.NAME_DIANA) { 170 | tagsCnt++; 171 | name = this.NAME_DIANA; 172 | } 173 | if (element.tag_title.includes('乃琳') && name != this.NAME_EILEEN) { 174 | tagsCnt++; 175 | name = this.NAME_EILEEN; 176 | } 177 | }); 178 | if (tagsCnt != 1) { 179 | name = this.NAME_OTHERS; 180 | } 181 | return name; 182 | } 183 | 184 | public getNameFromUri(uri: vscode.Uri): string { 185 | let name = this.NAME_OTHERS; 186 | if (uri.path.includes('ava')) { 187 | name = this.NAME_AVA; 188 | } 189 | if (uri.path.includes('bella')) { 190 | name = this.NAME_BELLA; 191 | } 192 | if (uri.path.includes('carol')) { 193 | name = this.NAME_CAROL; 194 | } 195 | if (uri.path.includes('diana')) { 196 | name = this.NAME_DIANA; 197 | } 198 | if (uri.path.includes('eileen')) { 199 | name = this.NAME_EILEEN; 200 | } 201 | return name; 202 | } 203 | 204 | public getNamedTitle(name: string): string { 205 | let title = ""; 206 | if (name === this.NAME_AVA) { 207 | title = Utility.getConfiguration().get('titleAva', ''); 208 | } else if (name === this.NAME_BELLA) { 209 | title = Utility.getConfiguration().get('titleBella', ''); 210 | } else if (name === this.NAME_CAROL) { 211 | title = Utility.getConfiguration().get('titleCarol', ''); 212 | } else if (name === this.NAME_DIANA) { 213 | title = Utility.getConfiguration().get('titleDiana', ''); 214 | } else if (name === this.NAME_EILEEN) { 215 | title = Utility.getConfiguration().get('titleEileen', ''); 216 | } 217 | 218 | if (title === "") { 219 | title = Utility.getConfiguration().get('title', ''); 220 | } 221 | return title; 222 | } 223 | 224 | public getCaoTitle(): string { 225 | let title = Utility.getConfiguration().get('titleOfficial', ''); 226 | if (title === "") { 227 | title = Utility.getConfiguration().get('title', ''); 228 | } 229 | return title; 230 | } 231 | 232 | public static isWebContext(): boolean { 233 | return vscode.env.appHost != 'desktop'; 234 | } 235 | } 236 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | import * as vscode from 'vscode'; 3 | import { ReminderView } from './reminderView'; 4 | import { Scheduler } from './scheduler'; 5 | 6 | export function activate(context: vscode.ExtensionContext) { 7 | const scheduler = new Scheduler(context); 8 | scheduler.start(); 9 | 10 | context.subscriptions.push(vscode.commands.registerCommand('asoul.showReminderView', () => { 11 | ReminderView.show(context); 12 | })); 13 | 14 | context.subscriptions.push(vscode.commands.registerCommand('asoul.openGallery', () => { 15 | vscode.commands.executeCommand('vscode.open', vscode.Uri.parse('https://asoulfanart.com/pic')); 16 | })); 17 | 18 | vscode.workspace.onDidChangeConfiguration((ds) => { 19 | if (ds.affectsConfiguration("asoul.reminderViewIntervalInMinutes")) { 20 | scheduler.stop(); 21 | scheduler.start(); 22 | } 23 | }); 24 | } 25 | 26 | export function deactivate() { 27 | } -------------------------------------------------------------------------------- /src/reminderView.ts: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | import * as vscode from 'vscode'; 3 | import Asset, {ASoulGetRandomPicResult, isASoulDefaultPicResult, isASoulGetRandomPicResult} from './asset'; 4 | 5 | interface ButtonMessage { 6 | command: string, 7 | args: string 8 | } 9 | 10 | export class ReminderView { 11 | private static panel: vscode.WebviewPanel | undefined; 12 | 13 | public static async show(context: vscode.ExtensionContext) { 14 | let asset: Asset = new Asset(); 15 | 16 | let panel_initialized = false; 17 | if (!this.panel){ 18 | this.panel = vscode.window.createWebviewPanel("asoul", "A-SOUL", vscode.ViewColumn.Two, { 19 | enableScripts: true, 20 | retainContextWhenHidden: true, 21 | }); 22 | this.panel.onDidDispose(() => { 23 | this.panel = undefined; 24 | }); 25 | panel_initialized = true; 26 | } 27 | 28 | const imagePath = await asset.getImageUri(); 29 | if (isASoulGetRandomPicResult(imagePath)) { 30 | const name = asset.getName(imagePath.tags); 31 | let title = asset.getNamedTitle(name); 32 | if (Asset.isWebContext()) { 33 | imagePath.img = 'https://images.weserv.nl/?url=' + imagePath.img; 34 | } 35 | this.panel.webview.html = this.generateOnlineHtml(imagePath, title); 36 | } else if (isASoulDefaultPicResult(imagePath)){ 37 | let title = ""; 38 | if (imagePath.tag === 'niuniu') { 39 | title = asset.getTitle(); 40 | title += " 勇敢牛牛,不怕困难!" 41 | } else if (imagePath.tag === 'cao') { 42 | title = asset.getCaoTitle(); 43 | } else { 44 | title = asset.getNamedTitle(imagePath.tag); 45 | } 46 | if (Asset.isWebContext()) { 47 | imagePath.img = 'https://images.weserv.nl/?url=' + imagePath.img; 48 | } 49 | this.panel.webview.html = this.generateHtml(imagePath.img, title); 50 | } else { 51 | let title = asset.getTitle(); 52 | if (Asset.isWebContext()) { 53 | this.panel.webview.html = this.generateHtml('https://images.weserv.nl/?url=' + imagePath, title); 54 | } else { 55 | this.panel.webview.html = this.generateHtml(imagePath, title); 56 | } 57 | } 58 | 59 | this.panel.reveal(); 60 | if (panel_initialized) { 61 | this.panel.webview.onDidReceiveMessage( 62 | (message: ButtonMessage) =>{ 63 | switch(message.command) { 64 | case "refresh": 65 | ReminderView.show(context); 66 | break 67 | case "open": 68 | vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(message.args)); 69 | break 70 | } 71 | } 72 | ) 73 | } 74 | } 75 | 76 | protected static generateOnlineHtml(imagePath: ASoulGetRandomPicResult, title: string) { 77 | let html = ` 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 104 | A-SOUL 105 | 106 | 107 |

${title}

108 |
109 | 再来一张!  110 | 来源…  111 | 更多 @${imagePath.owner.name} 的作品… 112 |
113 |
114 |
115 | 116 | `; 117 | return html; 118 | } 119 | 120 | protected static generateHtml(imagePath: string | vscode.Uri, title: string): string { 121 | let html = ` 122 | 123 | 124 | 125 | 126 | A-SOUL 127 | 128 | 129 |

${title}

130 |
131 | 132 | `; 133 | return html; 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /src/scheduler.ts: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | import * as vscode from "vscode"; 3 | import Asset from "./asset"; 4 | import { ReminderView } from './reminderView'; 5 | import { Utility } from './utility'; 6 | 7 | export class Scheduler { 8 | private timer : NodeJS.Timeout | null = null 9 | 10 | 11 | public constructor(private context: vscode.ExtensionContext) { 12 | } 13 | 14 | public start() { 15 | if (this.timer != null) return; 16 | this.timer = setInterval(() => { 17 | const notification = Utility.getConfiguration().get('notification', false); 18 | 19 | if (notification) { 20 | const title = Utility.getConfiguration().get('title', ''); 21 | vscode.window.showInformationMessage(title, "放松一下!").then((val) => { 22 | if (val) { 23 | ReminderView.show(this.context); 24 | } 25 | }) 26 | } else { 27 | ReminderView.show(this.context); 28 | } 29 | }, 1000 * 60 * Math.max(Utility.getConfiguration().get('reminderViewIntervalInMinutes', 60), 1)); 30 | } 31 | 32 | public stop() { 33 | if (this.timer == null) return; 34 | clearInterval(this.timer); 35 | this.timer = null; 36 | } 37 | } -------------------------------------------------------------------------------- /src/utility.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | import * as vscode from "vscode"; 3 | 4 | export class Utility { 5 | 6 | public static getConfiguration(): vscode.WorkspaceConfiguration { 7 | return vscode.workspace.getConfiguration("asoul"); 8 | } 9 | } -------------------------------------------------------------------------------- /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 Type-Checking Option */ 12 | "strict": true, /* enable all strict type-checking options */ 13 | /* Additional Checks */ 14 | "noUnusedLocals": true /* Report errors on unused locals. */ 15 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 16 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 17 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 18 | }, 19 | "exclude": [ 20 | "node_modules" 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 | } --------------------------------------------------------------------------------